Pythonライブラリ「NumPy」とは?関数一覧(学習メモ)
ライブラリ「NumPy」について学んだことをメモします。
NumPy(ナムパイ)
数値計算や多次元配列などを効率的に処理するライブラリ。
機械学習でよく使う2次元配列や、さらに高次元の配列を用いる場合は必ず使用する。
NumPyのライブラリのインポートは、以下のように記述するのが一般的。
別名として、「np」とする慣習がある。
import numpy as np
array()関数で配列を定義する
Pythonリストをもとに、numpy.array() を使って定義する。
array(行,列)で定義する。
※行と列の考え方
1行4列の行列 → [1,2,3,4]
4行3列の行列 → [1,2,3]
[4,5,6]
[7,8,9]
[10,11,12]
例えば、「1,2,3,4,5,6」という配列を定義したい場合は以下のとおり。
In [0]:
# 1次元配列 array1 = np.array([1, 2, 3, 4, 5, 6]) # 1次元配列 array1
Out [0]:
array([1, 2, 3, 4, 5, 6])
例えば、「1,2,3」「4,5,6」という二次元配列を定義したい場合は以下のとおり。
In [0]:
# 2次元配列 array2 = np.array([[1, 2, 3], [4, 5, 6]]) # 2次元配列 array2
Out [0]:
array([[1, 2, 3],
[4, 5, 6]])
例えば、(「1,2,3」「4,5,6」)(「7,8,9」「10,11,12」)という三次元配列を定義したい場合は以下のとおり。
In [0]:
# 3次元配列 array3 = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]) # 3次元配列 array3
Out [0]:
array([[[ 1, 2, 3],
[ 4, 5, 6]],
[[ 7, 8, 9],
[10, 11, 12]]])
配列の次数を確認したい場合は、インスタンス変数 shapeを使う。
In [0]:
array1.shape # 次数の確認
Out [0]:
(6,)
reshape()関数で次元を変形する
配列を指定した次数に変形する場合、reshape関数を使う。
このとき、変形後の次数のうち、ひとつを-1 と指定することで、自動的に次数が計算される。
In [0]:
array1.reshape(-1, 2) # (6,) を (3, 2) にする
Out [0]:
array([[1, 2],
[3, 4],
[5, 6]])
※2列のみ指定することで、行数を2行に自動変換してくれる。
In [0]:
array3.reshape((2, -1)) # (2, 2, 3) を (2, 6) にする
Out [0]:
array([[ 1, 2, 3, 4, 5, 6],
[ 7, 8, 9, 10, 11, 12]])
※2行のみ指定することで、列数を6列に自動変換してくれる。
arange() 関数で指定した数列を出す
開始値と終了値(終了値は入らない)と、公差(デフォルト1)を指定した数列を返す。
In [0]:
# 0から9まで np.arange(10)
Out [0]:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [0]:
# -1 から 1 まで、0.2 きざみ np.arange(-1.0, 1.0, 0.2)
Out [0]:
array([-1.00000000e+00, -8.00000000e-01, -6.00000000e-01, -4.00000000e-01,
-2.00000000e-01, -2.22044605e-16, 2.00000000e-01, 4.00000000e-01,
6.00000000e-01, 8.00000000e-01])
linspace() 関数で指定した数列を出す
開始値と終了値(デフォルトで入る)と、個数(デフォルト50)を指定して、数列を返す。
引数 retstep=True とすると、そのときの公差もあわせて返す。
In [0]:
# 0から10まで、10個分 np.linspace(0, 10, 10)
Out [0]:
array([ 0. , 1.11111111, 2.22222222, 3.33333333, 4.44444444,
5.55555556, 6.66666667, 7.77777778, 8.88888889, 10. ])
In [0]:
# 0から10(入らない)まで、10個分 np.linspace(0, 10, 10, endpoint=False)
Out [0]:
array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
In [0]:
# 公差も返す(結果はタプル) np.linspace(0, 10, 10, retstep=True)
Out [0]:
(array([ 0. , 1.11111111, 2.22222222, 3.33333333, 4.44444444,
5.55555556, 6.66666667, 7.77777778, 8.88888889, 10. ]),
1.1111111111111112)
押していただけると励みになります!