Posted at

numpy tips

More than 5 years have passed since last update.


配列周りの関数

機能
コマンド
備考

リスト→配列
numpy.array(リスト変数)
変換元の変数はタプルでもOK

リスト→配列(型指定)
numpy.array(リスト変数, numpy.データ型)

配列→リスト

ndarray.tolist()

配列サイズ

ndarray.shape

配列次元数

ndarray.ndim

配列の要素数

ndarray.size

配列のバイト数

ndarray.nbytes

配列の内容
numpy.type(ndarray)

配列の変数型

ndarray.dtype

変数型の変更

ndarray.astype(numpy.データ型)


配列の結合

dstack、hstack、vstackの3種類。それぞれの頭文字がdepth wise (along third axis)、horizontally (column wise)、vertically (row wise)を表している

以下の変数で試す

>>> a = np.array((1,2,3))

>>> b = np.array([4,5,6])
>>> a
array([1, 2, 3])
>>> b
array([4, 5, 6])


dstack

depth wise (along third axis)

転置してから結合ってことかな?

>>> np.dstack((a,b))

array([[[1, 4],
[2, 5],
[3, 6]]])


hstack

horizontally (column wise)

>>> np.hstack((a,b))

array([1, 2, 3, 4, 5, 6])


vstack

vertically (row wise)

>>> np.vstack((a,b))

array([[1, 2, 3],
[4, 5, 6]])


配列のソート

ndarray.sort()を利用すればいい。この場合、ndarray変数の中身がソートされる。

numpy.sort(ndarray)とした場合は、ソートした結果のコピーが返却される。

ちなみに、sortした場合のインデックスを返すndarray.argsort()なんてのもある。

ndarray.sort()はsortする軸の指定があるので、実行時に注意が必要。

以下の変数をソートしてみる

>>> hoge = np.array([[1,3,2],[6,5,4],[9,7,8]])

>>> hoge
array([[1, 3, 2],
[6, 5, 4],
[9, 7, 8]])

通常のソート。

行ごとにソートが走る。

>>> np.sort(hoge)

array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])

axisを使えば、列ごとにソートする。

>>> np.sort(hoge, axis=0)

array([[1, 3, 2],
[6, 5, 4],
[9, 7, 8]])

Structured Arraysにして配列に名前つければ、特定の列指定でソートできるみたい。

しかし、Structured Arraysを上手く作る方法がわからん・・・

*numpyデータ型一覧

調べたら書く