NumPy配列に列を追加するにはどうすればよいですか? 質問する

NumPy配列に列を追加するにはどうすればよいですか? 質問する

次の 2D 配列があるとします。

a = np.array([
    [1, 2, 3],
    [2, 3, 4],
])

2 番目の軸に沿ってゼロの列を追加して、次の結果を取得します。

b = np.array([
    [1, 2, 3, 0],
    [2, 3, 4, 0],
])

ベストアンサー1

np.r_[...]ドキュメント) そしてnp.c_[...]ドキュメント) は、np.vstackおよびの便利な代替手段ですnp.hstack。括弧 () の代わりに角括弧 [] を使用することに注意してください。

いくつかの例:

: import numpy as np
: N = 3
: A = np.eye(N)

: np.c_[ A, np.ones(N) ]              # add a column
array([[ 1.,  0.,  0.,  1.],
       [ 0.,  1.,  0.,  1.],
       [ 0.,  0.,  1.,  1.]])

: np.c_[ np.ones(N), A, np.ones(N) ]  # or two
array([[ 1.,  1.,  0.,  0.,  1.],
       [ 1.,  0.,  1.,  0.,  1.],
       [ 1.,  0.,  0.,  1.,  1.]])

: np.r_[ A, [A[1]] ]              # add a row
array([[ 1.,  0.,  0.],
       [ 0.,  1.,  0.],
       [ 0.,  0.,  1.],
       [ 0.,  1.,  0.]])
: # not np.r_[ A, A[1] ]

: np.r_[ A[0], 1, 2, 3, A[1] ]    # mix vecs and scalars
  array([ 1.,  0.,  0.,  1.,  2.,  3.,  0.,  1.,  0.])

: np.r_[ A[0], [1, 2, 3], A[1] ]  # lists
  array([ 1.,  0.,  0.,  1.,  2.,  3.,  0.,  1.,  0.])

: np.r_[ A[0], (1, 2, 3), A[1] ]  # tuples
  array([ 1.,  0.,  0.,  1.,  2.,  3.,  0.,  1.,  0.])

: np.r_[ A[0], 1:4, A[1] ]        # same, 1:4 == arange(1,4) == 1,2,3
  array([ 1.,  0.,  0.,  1.,  2.,  3.,  0.,  1.,  0.])

丸括弧 () ではなく角括弧 [] を使用する理由は、Python が1:4角括弧内のオブジェクトをスライスに変換するためです。

おすすめ記事