はじめに
NumPyは、ベクトルや行列計算を高速で行うためのライブラリです。
ここでは、NumPyでよく使うメソッドなどについて解説します。
Python3系の使用を想定しています。
インポート
NumPyを使うには、まずライブラリを読み込む必要があります。
慣習的に、np
とすることが多いです。
NumPy_1.py
importnumpyimportnumpyasnp
1次元配列
NumPyでは、リストのような配列を作ることができます。
NumPy_2.py
importnumpyasnpnp_arr_1=np.array([1,2,5])print(np_arr_1)print(type(np_arr_1))print(np_arr_1**2)np_arr_2=np.array([3,5,7])print(np_arr_1+np_arr_2)np_arr_3=np.arange(10)print(np_arr_3)np_arr_3[0:2]=100print(np_arr_3)
NumPyは要素同士の計算が簡単にできるのが特徴です。
NumPyを使わずに上記の処理を行おうとすると以下のようになります。
NumPy_3.py
arr_1=[1,2,5]fori,numinenumerate(arr_1):arr_1[i]=num**2print(arr_1)
NumPyの配列では、代入先の要素の値を更新すると、元の配列の値も更新されるので、注意が必要です。
元の配列が更新されないようにするには、copy()
メソッドを使用します。
NumPy_4.py
importnumpyasnpnp_arr_1=np.array([1,2,5])np_arr_2=np_arr_1np_arr_2[1]=100print(np_arr_1)print(np_arr_2)np_arr_1=np.array([1,2,5])np_arr_2=np_arr_1.copy()np_arr_2[1]=100print(np_arr_1)print(np_arr_2)
ある条件を満たす要素のみを取り出すことも可能です。
NumPy_5.py
importnumpyasnpnp_arr_1=np.array([1,2,5])print(np_arr_1[np_arr_1%2==1])
NumPyでは「ユニバーサル関数」と呼ばれる、配列の各要素に対する演算結果を返す関数が用意されています。
NumPy_6.py
importnumpyasnpnp_arr_4=np.array([-1,2,-3])print(np.abs(np_arr_4))np_arr_5=np.array([1,9,25])print(np.sqrt(np_arr_5))
NumPyでは、乱数を発生させることもできます。
NumPy_7.py
importnumpyasnpnp_arr_6=np.random.randint(0,10,5)print(np_arr_6)np_arr_7=np.random.randint(5)print(np_arr_7)
import
の部分を書き換えることで、より短く簡単に記述することができます。
Numpy_8.py
fromnumpy.randomimportrandintnp_arr_6=randint(0,10,5)print(np_arr_6)np_arr_7=randint(5)print(np_arr_7)
2次元配列
2次元配列に関するメソッドは以下のようになります。
NumPy_9.py
importnumpyasnpnp_arr_8=np.array([[1,2,3],[4,5,6]])print(np_arr_8)print(np_arr_8[1])print(np_arr_8[1,1])print(np_arr_8.sum())print(np_arr_8.sum(axis=0))# 列ごとに計算
print(np_arr_8.sum(axis=1))# 行ごとに計算
print(np_arr_8.shape)print(np_arr_8.reshape(3,2))print(np_arr_8.T)print(np.transpose(np_arr_8))print(np_arr_8.mean())# 平均
print(np.average(np_arr_8))# 平均
print(np.max(np_arr_8))# 最大値
print(np.min(np_arr_8))# 最小値
print(np.std(np_arr_8))# 標準偏差
print(np.var(np_arr_8))# 分散
print(np.argmax(np_arr_8))# 最大値の要素のインデックス番号
print(np.argmin(np_arr_8))# 最小値の要素のインデックス番号
まとめ
ここでは、NumPyでよく用いられるメソッドなどを紹介してきました。
マスターするには、実際に使ってみるのが一番の近道です。