Part3に引き続き、NumPy公式ドキュメントの初心者向け内容から、これだけは押さえておきたい配列操作を紹介する。
Part3では、ndarrayの作成方法やPythonのリストとの違いについて解説したが、本記事ではさらに一歩進んで、「配列の基本情報(ndim・shapeなど)」と「配列の作成方法」を学ぶ。
配列の構造を表す情報を知る
この章では、ndim, shape, size, dtypeの4つについて、配列の構造を把握するための基本的な属性を紹介する。
ndim
配列の次元数を知ることができる。
>>> a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])
>>> a.ndim
2
shape
配列の形状(各軸の要素数)を知ることができる。
また、結果はタプル形式で出力され、その要素数(長さ)はndimと一致する。
>>> a.shape
(4, 3)
>>> len(a.shape) == a.ndim
True
size
配列の要素数を知ることができる。
>>> a.size
12
dtype
配列内の要素のデータ型を知ることができる。
ndarrayでは同一配列内に格納される要素のデータ型は基本的に統一されているため、dtypeは単一のデータ型を返す。
>>> a.dtype
dtype('int64') # "int" for integer, "64" for 64-bit
もっと様々な属性について知りたい方はこちらの公式ドキュメントを見てみてください。
基本的な配列の作成方法
この章ではnp.zeros(), np.ones(), np.empty(), np.arange(), np.linspace()を使った基本的な配列の作成方法を学ぶ。
要素が0のみの配列
要素がすべて0である配列を簡単に作成することができる。
np.zeros()の引数はタプル形式であることに注意しよう。
>>> np.zeros((2, 3))
array([[0.0, 0.0, 0.0], [0.0, 0.0, 0.0]])
要素が1のみの配列
次は、要素がすべて1である配列を簡単に作成する。
引数に1つの整数を指定すると、その値が要素数となる1次元配列が作成される。
>>> np.ones(2)
array([1., 1.])
未初期化配列を作る
np.empty()を使い、未初期化配列を作ることができます。しかし、中身がnullや''などの何も入っていない配列を作るということではありません。
>>> np.empty(2)
array([3.14, 42. ]) # 値は不定
上記の例のように、指定した形状の配列は生成されるが、要素は初期化されないため、不定の値が入ります。これはメモリの状態に依存します。
使用する際は、後から各要素に値を代入する必要があります。
規則的な配列を作る
連続した値の配列を作る
以下のように連続した値が格納されている配列を簡単に作ることができます。
>>> np.arange(4)
array([0, 1, 2, 3])
np.arrayではなくnp.arangeなので注意。
等間隔な値の配列を作る
先ほどは連続した値による配列でしたが、開始値・終了値(この値は含まれない)・間隔を指定することで、等間隔な値の配列を作成することができる。
>>> np.arange(2, 9, 2)
array([2, 4, 6, 8])
分割することで等間隔な値の配列を作る
np.linspace()を使うことで、開始値と終了値の間を指定した要素数で分割することで、等間隔な値の配列を作成する。
>>> np.linspace(0, 10, num=5) # 開始値, 終了値, num=要素数
array([ 0. , 2.5, 5. , 7.5, 10. ])
まとめ
-
ndim : 配列の次元数を知ることができる
-
shape : 配列の形状(各軸の要素数)を知ることができる
-
size : 配列の要素数を知ることができる
-
dtype : 配列内の要素のデータ型を知ることができる
-
要素が
0や1のみの配列は専用のメソッドで簡単に作成することができる -
等間隔な値で構成されている配列も簡単に作成することができる
(機械学習エンジニア職での就職を目指している初心者ですので、間違えているところがあれば指摘していただけたら幸いです。)