妊婦がプログラマーになるまで

プログラミング未経験ワーママが産休からPythonで機械学習を学ぶ記録を記します。

Pythonライブラリ「NumPy」とは?関数一覧(学習メモ)

ライブラリ「NumPy」について学んだことをメモします。
f:id:damion_n:20210912220105p:plain

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)





押していただけると励みになります!

にほんブログ村 資格ブログ スキルアップへ
にほんブログ村