備忘録_Python_NumPy

備忘録_Python_NumPy

算術計算

>>> import numpy as np #import
>>> x = np.array([1.0,2.0,3.0]) #NumPy配列の生成
>>> print(x)
[1. 2. 3.]
>>> type(x)
<class 'numpy.ndarray'>
>>> y = np.array([2.0,4.0,6.0])
>>> x + y #要素ごと(element-wise)の足し算
array([3., 6., 9.])
>>> x - y #要素ごとの引き算
array([-1., -2., -3.])
>>> x * y #要素ごとの掛け算
array([ 2.,  8., 18.])
>>> x / y #要素ごとの割り算
array([0.5, 0.5, 0.5])
>>> x / 2 #要素を全て2で割る
array([0.5, 1. , 1.5])

N次元配列

二次元配列とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

>>> A = np.array([[1,2],[3,4]])
>>> print(A)
[[1 2]
 [3 4]]
>>> A.shape #shapeは、各次元ごとの要素数を示す
(2, 2)
>>> A.dtype #dtypeはデータ型を示す
dtype('int32')
>>> B = np.array([[3,0],[0,6]])
>>> A+B
array([[ 4,  2],
       [ 3, 10]])
>>> A * B
array([[ 3,  0],
       [ 0, 24]])
>>> A * 10
array([[10, 20],
       [30, 40]])

ブロードキャスト

ブロードキャストとは配列の形状を計算できるように合わせて計算を行う機能のことを指す。

>>> A = np.array([[1,2],[3,4]])
>>> B = np.array([10,20])
>>> A * B
array([[10, 40],
       [30, 80]])

要素へのアクセス

>>> X = np.array([[10,20],[30,40],[50,60]])
>>> print(X)
[[10 20]
 [30 40]
 [50 60]]
>>> X[0] #0行目
array([10, 20])
>>> X[0][1] #(0,1)の要素
20
>>> for row in X:
...     print(row)
...
[10 20]
[30 40]
[50 60]
>>> X = X.flatten() #Xを1次元の配列へ変換
>>> print(X)
[10 20 30 40 50 60]
>>> X[np.array([0,2,4])] #インデックスが0、2、4番目の要素を取得
array([10, 30, 50])

#NumPyの配列に対して不等号などの演算子を使うと結果はブーリアンの配列になる
#ブーリアン配列を使って、配列の各要素を取り出しができる(Trueに対応する要素を取り出す)
>>> X > 35
array([False, False, False,  True,  True,  True])
>>> X[X > 35]
array([40, 50, 60])