numpyで空配列の末尾に行を追加して2次元配列を作る

  • 41
    いいね
  • 1
    コメント
この記事は最終更新日から1年以上が経過しています。

Array

pythonのarrayは.appendメソッドを使って配列を追加することができます。

>>> arr = []
>>> arr.append([1, 2, 3])
>>> arr.append([4, 5])
>>> arr
[[1, 2, 3], [4, 5]]

行の長さが自由な2次元配列になります。

numpy.ndarray

numpyで同じように追加しようとしても2次元配列になりません。

>>> arr = np.array([])
>>> arr = np.append(arr, np.array([1, 2, 3]))
>>> arr = np.append(arr, np.array([4, 5]))
>>> arr
array([ 1.,  2.,  3.,  4.,  5.])

numpyを2次元配列として末尾に行を追加するには,以下のように書く必要があります。

>>> arr = np.empty((0,3), int)
>>> arr = np.append(arr, np.array([[1, 2, 3]]), axis=0)
>>> arr = np.append(arr, np.array([[4, 5, 0]]), axis=0)
>>> arr
array([[1, 2, 3],
       [4, 5, 0]])

ポイント

  • np.emptyで初期化しておく
  • 追加する配列の要素数は初期化した行の長さ(上の例だと3)と一致させる
  • np.appendの第二引数となるndarrayは多重配列
  • axis=0を忘れない

numpy.ndarrayの参照

>>> arr
array([[1, 2, 3],
       [4, 5, 0]])
>>> arr[0,1]
2
>>> arr[1,:2]
array([4, 5])
>>> arr[:, 1]
array([2, 5])
>>>

スライスも簡単にできて便利です。