Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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])
>>>

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away