2020年4月6日月曜日

【Numpy】ndarrayの作り方

 多次元配列計算を効率よく実行できるPythonの数値計算ライブラリNumPyの配列型データ構造であるndarrayの作り方について説明する。



1. NumPyのインポート

 NumPyを使う際にはimportが必要。しばしばnpと略される。

import numpy as np


2. arrayによるndarrayの生成

 numpy.arrayの引数に[]で囲った要素(つまりリスト)や()で囲った要素(つまりタプル)を与えると、ndarrayが生成される。

import numpy as np

x = np.array([10, 11, 12])
print(x)

実行結果

[10, 11, 12]


引数のリストは複数与えることが可能。

import numpy as np

y = np.array([[10, 11, 12],[13, 14, 15]])
print(y)

実行結果

[[10, 11, 12],
 [13, 14, 15]]


引数に別に作ったリストを与えても等価

import numpy as np

y1 = [10, 11, 12]
y2 = [13, 14, 15]
y = np.array([y1, y2])
print(y)

実行結果

[[10, 11, 12],
 [13, 14, 15]]


タプル→ndarrayの例。

import numpy as np

x = np.array((10, 11, 12))
print(x)

実行結果

[10, 11, 12]


3. zeros / ones / emptyによるndarrayの生成

 numpy.zerosは全ての要素が0のndarrayを生成する。numpy.onesは全ての要素が1、numpy.emptyはランダムな値が入ったndarrayが生成される。

import numpy as np

print(np.zeros(3))

実行結果

[0. 0. 0.]


import numpy as np

print(np.ones((2, 3)))

実行結果

[[1., 1., 1.],
 [1., 1., 1.]]


import numpy as np

print(np.empty((2, 3, 4)))

実行結果

[[[1.09918035e+155 1.27124315e+232 1.14448054e+243 9.92132497e+247]
  [6.01334637e-154 1.87673453e-152 1.28036948e-152 2.19528033e-152]
  [1.42709638e+248 6.52016598e+252 1.46923560e+195 6.52022889e+252]]

 [[2.43580036e-152 2.46088219e-154 8.83078595e+199 1.21906099e-152]
  [9.29380881e+242 2.17978855e+243 1.06400250e+248 6.87060129e+228]
  [1.32914175e+179 2.42766858e-154 2.32160024e-152 7.82137594e+179]]]


4. arangeによる規則的なndarrayの生成

 numpy.arangeを用いるとrange関数のように任意のステップ刻みの一次元ndarrayを生成できる。引数は(start, stop)もしくは(start, stop, step)となりstepの指定がない場合は1刻みとなる。なおrange関数では小数は使えないがarangeでは小数が使える。

import numpy as np

print(np.arange(5, 10))

実行結果

[5, 6, 7, 8, 9]


import numpy as np

print(np.arange(5, 25, 5))

実行結果

[ 5, 10, 15, 20]


import numpy as np

print(np.arange(1.5, 2.1, 0.2))

実行結果

[1.5, 1.7, 1.9, 2.1]


5. reshapeによる1次元ndarrayの変形

 reshapeにより要素は変えずにndarrayを変形できる。1次元ndarrayを生成しreshapeすることで多次元のndarrayを作成可能。書式は以下の通り。

numpy.reshape(a, newshape, order='C')
引数 意味
a : array_like 変形するndarray
newshape : int or tuple of ints 変形後の
order : {‘C’, ‘F’, ‘A’}, optional 変形後の要素の置き換え順の指定(オプション)

要素数6のndarrayを3x2の2次元ndarrayに変形する例。

import numpy as np

print(np.arange(6).reshape(3, 2))

実行結果

[[0 1]
 [2 3]
 [4 5]]


要素数12のndarrayを2x2x3の3次元ndarrayに変形する例。

import numpy as np

print(np.arange(12).reshape(2, 2, 3))

実行結果

[[[ 0  1  2]
  [ 3  4  5]]

 [[ 6  7  8]
  [ 9 10 11]]]


6. リファレンス

NumPy > Array creation
NumPy > Quickstart tutorial
Scipy.org > NumPy > numpy.ndarray
Scipy.org > NumPy > numpy.reshape

使用バージョン:Python 3.7.0/numpy 1.18.4

0 件のコメント:

コメントを投稿