numpy.arrayで多次元配列を作成する
numpy.array(以下np.array)は配列オブジェクトを指定してndarrayを作成します。多次元配列を作成する場合、配列オブジェクトにはシーケンス(リストやタプル(基本的にはタプルを使用)など)を入れることに注意しましょう。
import numpy as np test_1 = np.array([1,2,3]) test_1 =>array([1, 2, 3]) test_2 = np.array([[1,2,3],[4,5,6],[7,8,9]]) test_2 =>array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
test_1では長さが3の1次元配列(ベクトル)を、test_2では3×3の2次元配列(行列)を作成しています。
numpy.zeros(zeros_like)で全ての要素が0の配列を作成する
import numpy as np test_2 = np.array([[1,2,3],[4,5,6],[7,8,9]) test_3 = np.zeros(4) test_4 = np.zeros_like(test_2) ## np.zeros(test_2.shape)と同じ test_3 =>array([0., 0., 0., 0.]) test_4 =>array([[0, 0, 0], [0, 0, 0], [0, 0, 0]])
np.zerosでは引数にshape(形状)を指定して使用します。test_3の場合は、3を指定したので、長さが3の全ての要素が0の配列が作成されます。
np.zeros_likeではある配列とまったく同様の性質(shape, dtype等)をもった配列を新しく作成し、要素を1で初期化することができます。test_4の場合は、test_2の配列と同質の配列を作成し、要素を1で初期化しました。np.zerosでも同様のことができますが、.shapeをつけなくて済むため、np.zero_likeを使用します。
numpy.ones(ones_like)で全ての要素が1の配列を作成する
import numpy as np test_5 = np.ones((3,4)) test_6 = np.ones_like(test_2) test_5 =>array([[1., 1., 1., 1.], [1., 1., 1., 1.], [1., 1., 1., 1.]]) test_6 =>array([[1, 1, 1], [1, 1, 1], [1, 1, 1]])
zeros/zeros_likeと同じ処理をします。全ての要素が0になるか1になるかの違いがあるだけです。
numpy.empty(empty_like)で非初期化の配列を作成
import numpy as np test_7 = np.empty(5) test_7 =>array([4.64180145e-310, 0.00000000e+000, 1.58101007e-322, 0.00000000e+000, 0.00000000e+000]) test = np.array([1,2,3],[4,5,6]) test_8 = np.empty_like(test) test_8 =>[[93951105152016 0 0] [ 0 0 0]]
np.empty/empty_likeでは要素の初期化を行わないため、処理がzeros/onesと比べて速くなります。しかし、要素を指定し初期化を行わないため、各要素の値はめちゃくちゃになる(実行時の環境により値が変化する)ので他で指定する必要があります。