NumPyはアレイを扱い、数値計算を行うためのPythonのモジュールです。
行列のデータを計算できるため、特にデータや画像の解析で重宝されます。
どのように扱われるかは順を追って説明する必要がありますので、今回はNumpyの基礎であるアレイデータの作成についてチートシートにまとめてみました。
NumPyの関数は公式ドキュメントにまとまっています。その他の関数や引数の扱いについては公式ドキュメントを参考にしてください。
アレイデータについて
アレイデータは配列データと呼ばれる時もあります。
アレイとpythonのデータの型であるリストは非常に似ていますが厳密にはことなります。
リストは入れるデータの型に制限はありませんが、アレイの場合は行列計算するために格納するデータの型が全て同じである必要があります。
データの長さや型が異なるリストでもアレイデータは作ることができますが、NumPyの意図とは違うため、警告が出ます。アレイデータにする必要がないため、避けるようにしましょう。
import numpy as np
np.array([1, '太郎', [1, 2], ['花子', 'Mike'], (3, 4)])
VisibleDeprecationWarning: …
array([1, '太郎', list([1, 2]), list(['花子', 'Mike']), (3, 4)], dtype=object)
アレイデータの作成
Numpyモジュールはエイリアスにnpとして使用するのが通例となっています。以後numpyのモジュールはnpとして話を進めていきます。
import numpy as np
np.array()
配列データを作る一番簡単な方法はリストから作成する方法です。
np.array([0, 1, 4, 6, 9, 13])
>>>
array([ 0, 1, 4, 6, 9, 13])
リストを多重にすることで2次元、3次元のデータを作ることできます。
2次元データ
np.array([[0, 1], [1, 2], [2, 3]])
>>>
array([[0, 1],
[1, 2],
[2, 3]])
3次元データ
np.array([[[0,1], [1, 2]], [[2, 3], [3,4]]])
>>>
array([[[0, 1],
[1, 2]],
[[2, 3],
[3, 4]]])
アレイデータを扱う際、多次元のデータになると一体何次元のデータを扱っているかわからなくなる時がありました。
その際見分けるポイントとしてデータの出力時のarray(の後の ‘ [ ‘の数で何次元のデータを扱っているか見分けることができます。
例えば2次元データの場合は ‘ [ ‘の数が2個、3次元データの場合は’ [ ‘の数が3個になります。
画像データを扱う際は多次元になりやすいので次元数を瞬時に見分ける技術が必要になってきます。
np.arange()
アレイデータはリストから作成することができますが、膨大なデータ量になるとリストを作成するのが面倒です。等間隔の数列のデータであればnp.arange()
で作成可能です。
np.arange(10)
>>>
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
デフォルトの引数ではstart=0, step=1となっており、終点の数値を設定するだけで大丈夫です。始まりの数字と間隔を変更したい場合はstart、stepの引数を設定します。引数の順番はstart, stop, stepの順です。
np.arange(2, 10, 2)
>>>
array([2, 4, 6, 8])
np.zeros()
np.zeros
は0の配列を作ります。
np.zeros(6)
>>>
array([0., 0., 0., 0., 0., 0.])
タプルでデータの形を指定することで多次元の行列を作成することができます。例えば下の例では3*3の行列の例です。
np.zeros((3,3))
>>>
array([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])
初期のデータ型はfloatになっているのでintの場合はdtypeで指定します。
np.zeros((3,3), dtype=int)
>>>
array([[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
np.ones
np.ones()
はnp.zeros()
とほぼ使い方は同じです。
np.ones((3,3))
>>
array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
特定の数値の行列が欲しい時にはnp.ones()
に値をかけることで実現可能です。
np.ones((3,3)) * 255
>>>
array([[255., 255., 255.],
[255., 255., 255.],
[255., 255., 255.]])
np.eye()
単位行列を作る関数になります。単位行列とは対角線が数値が1になっている正方行列(行と列の数が同じ)になります。正方行列のため引数は1つで行列を作成できます。
np.eye(3)
>>>
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
まとめ
NumPyのアレイデータは画像解析や機械学習、深層学習で多用されます。アレイデータを扱えると行列の計算が楽なのでおすすめです。