【Python】NumPyの配列で四則演算をしよう

python

本記事ではNumPyを用いた配列で四則演算について解説しています。目次は以下の通りです。

構文

構文としては2つの配列の間に+,-,*,/を入れるだけなので、算数の四則演算とほぼ一緒です。そして、対応するインデックス同士で演算します。

具体例

具体例として次の配列を用います。

list1=np.array([2,5,4])
list2=np.array([1,3,2])

足し算

次のようなコードになります。

import numpy as np
list1=np.array([2,5,4])
list2=np.array([1,3,2])
print(list1+list2)

出力結果:[3,8,6]
こちらは
インデックス0で2+1=3
インデックス1で5+3=8
インデックス2で4+2=6
のように各インデックスで足し算されていることがわかると思います。

引き算

次のようなコードになります。

import numpy as np
list1=np.array([2,5,4])
list2=np.array([1,3,2])
print(list1-list2)

出力結果:[1,2,2]
こちらも各インデックスで引き算されていることがわかると思います。

かけ算

次のようなコードになります。

import numpy as np
list1=np.array([2,5,4])
list2=np.array([1,3,2])
print(list1*list2)

出力結果:[2,15,8]
こちらも各インデックスでかけ算されていることがわかると思います。

わり算

次のようなコードになります。

import numpy as np
list1=np.array([2,5,4])
list2=np.array([1,3,2])
print(list1/list2)

出力結果:[2. , 1.66666667, 2. ]
こちらも各インデックスでわり算されていることがわかると思います。

リスト型で四則演算を行う場合

一方でリスト型だと四則演算しようとすると、エラーが出てくる場合があります。その理由としてはリストは数値的な操作ではなく、文字列的な操作を行うからです。
例えば足し算だと以下のようになります。

list1=[2,5,4]
list2=[1,3,2]
print(list1+list2)

出力結果:[2, 5, 4, 1, 3, 2]
こちらはエラーではないですが、リストの数値を足し算したというよりはリストを合成したという形になります。

一方で引き算の場合はどうでしょう。

list1=[2,5,4]
list2=[1,3,2]
print(list1-list2)

実行すると次のようになります。

TypeError                                 Traceback (most recent call last)
<ipython-input-2-3e8927b48a38> in <cell line: 3>()
      1 list1=[2,5,4]
      2 list2=[1,3,2]
----> 3 print(list1-list2)

TypeError: unsupported operand type(s) for -: 'list' and 'list'

エラーが出てきました。リストの演算として-は行えないということを示しています。

かけ算のときは、

TypeError: can't multiply sequence by non-int of type 'list'

わり算のときは、

TypeError: unsupported operand type(s) for /: 'list' and 'list'

と出力されます。

まとめ

本記事のポイントを以下にまとめます。

・NumPyの配列(ndarray型)の四則演算は算数の四則演算と同じ
・インデックス同士で演算が行われる
・リスト型だと算数的な四則演算はできない

コメント

タイトルとURLをコピーしました