二次元配列の初期化

NumPyを使うと簡単に二次元配列を作ることができます。ここでは、NumPyのzeros関数を使って要素が全てゼロの配列を作っています。

import numpy as np

array2d = np.zeros((4,10))
print array2d

zeros関数の第一引数に(4,10)と入れているので、
[[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
というように4*10の配列になります。”0.”となっているのは、浮動小数点型となっていることを反映しています。

(4,10,10)とすると4*10*10の3次元配列が作れますし、さらに4次以上の多次元配列も作ることができます。

要素を1で初期化したい場合にはones関数を使います。

import numpy as np

array2d = np.ones((4,10))
print array2d

また、浮動小数点型でなく、任意の値で初期化したい場合もあると思います。そのような時には次のようにzerosで初期化してから値を足すと良いでしょう。または、onesで初期化してから値を掛け算しても良いでしょう。たとえば、全て4にしたい時には、次のようにします。

import numpy as np

array2d = np.zeros((4,10))+4
print array2d

[[ 4. 4. 4. 4. 4. 4. 4. 4. 4. 4.]
[ 4. 4. 4. 4. 4. 4. 4. 4. 4. 4.]
[ 4. 4. 4. 4. 4. 4. 4. 4. 4. 4.]
[ 4. 4. 4. 4. 4. 4. 4. 4. 4. 4.]]
というようになりました。こちらも、”4.”となっているのは、浮動小数点型となっていることを反映しています。

NumPyのzeros関数、ones関数は型を指定して配列を作成することができます。その場合は、第二引数に指定します。整数としたいならnp.int、もっと細かく符号なし8ビット整数(unsigned 8bit integer)としたいならnp.uint8というように指定します。浮動小数点型を明示する時も同様に、np.floatとします。

import numpy as np

array2d = np.ones((4,10),np.int)*4
print array2d

[[4 4 4 4 4 4 4 4 4 4]
[4 4 4 4 4 4 4 4 4 4]
[4 4 4 4 4 4 4 4 4 4]
[4 4 4 4 4 4 4 4 4 4]]
このように、すべて整数として保持されることになります。