◀ 4.

NumPy 配列に要素を追加する方法 (append / concatenate)

▶
この記事の要点
  • NumPy 配列に要素を追加する方法
  • 末尾追加: numpy.append(arr, value)
  • 位置指定追加: numpy.insert(arr, idx, value)
  • どちらも元の配列は変化せず、新しい配列が返る
  • 多次元配列に行・列を追加するときは axis=0 / axis=1 を指定

 

これはNumPyの要素の追加に関する記事です。

要素の追加はappend関数もしくはinsert関数を使用します。

どちらの関数も、戻り値として要素を追加した配列を返します。

つまり、関数の引数に指定した配列の要素には変化がありません。

具体的な例は下記を参照してください。

本記事では多次元配列への行や列の追加方法も記載します。

 

append関数とinsert関数の違い

2行2列へ2行1列をaxis1で追加すると2行3列になる図

append関数は配列の末尾に要素を追加します。

insert関数はインデックスを指定することで任意の箇所に要素を追加することが可能です。

 

append関数

構文

append(配列, 値)

複数の値を追加する場合は第2引数をリストの形にします。

 

例

import numpy as np

array1 = np.array(
    ["A", "B", "C"]
)

array2 = np.append(array1, ["D", "E"])

print(array1)
print(array2)

 

出力結果

['A' 'B' 'C']
['A' 'B' 'C' 'D' 'E']

append関数の第1引数に指定されたarray1の値には変化がなく、

戻り値であるarray2が要素の追加された配列であることを確認できます。

 

 

insert関数

構文

insert(配列, インデックス, 値)

複数の値を追加する場合は第3引数をリストの形にします。

 

例

import numpy as np

array1 = np.array(
    ["A", "B", "C"]
)

array2 = np.insert(array1, 1, ["D", "E"])

print(array1)
print(array2)

 

出力結果

['A' 'B' 'C']
['A' 'D' 'E' 'B' 'C']

insert関数の第1引数に指定されたarray1の値には変化がなく、

戻り値であるarray2が要素の追加された配列であることを確認できます。

また、第2引数にインデックスを指定することで任意の箇所に追加されていることが確認できます。

 

 

多次元配列への行の追加方法

構文

append(多次元配列, 値, axis=パラメーター)

insert(多次元配列, インデックス, 値, axis=パラメーター)

2次元配列ではaxis=0で行方向、axis=1で列方向に追加します。3次元以上のaxisも軸番号ですが、すべての次元を行・列と呼ぶ説明ではありません。

 

構文

import numpy as np

array1 = np.array([
    ["A", "B"]
    , ["C", "D"]
])

array2 = np.insert(array1, 1, [["E", "F"]], axis=0)

print(array2)

 

出力結果

[['A' 'B']
 ['E' 'F']
 ['C' 'D']]

 

 

多次元配列への列の追加方法

次は2行2列の配列へ1列追加する実行例です。列の値は2行1列、shape=(2,1)として渡します。NumPy 2.4.4で元の1次元例・行追加例と合わせて実行し、出力と元配列が変わらないことを確認しました。

import numpy as np

array1 = np.array([['A', 'B'], ['C', 'D']])
column = np.array([['E'], ['F']])

appended = np.append(array1, column, axis=1)
inserted = np.insert(array1, [1], column, axis=1)
print(appended)
print(inserted)
print(array1)

出力

[['A' 'B' 'E']
 ['C' 'D' 'F']]
[['A' 'E' 'B']
 ['C' 'F' 'D']]
[['A' 'B']
 ['C' 'D']]

最初は末尾へ列を追加した結果、次は位置1へ挿入した結果、最後は変更されていない元の配列です。insertのインデックスは0始まりです。

appendのaxis省略と形状不一致に注意

np.append(array1, ["E", "F"])のようにaxisを省略すると、2次元の形は維持されず平坦化された1次元配列になります。列追加したいならaxis=1と値の形状を明示してください。同じ値でも[["E"], ["F"]]は2行1列、["E", "F"]は1次元です。

np.append(array1, ["E", "F"], axis=1)は今回の検証でValueErrorでした。axisを指定したappendは配列の次元数をそろえ、追加する軸以外のサイズを合わせます。エラーを隠すために無条件にflattenするのでなく、必要な結果のshapeから確認します。

insertの1と[1]は同じとは限らない

列追加例ではnp.insert(array1, [1], column, axis=1)と、インデックスを1要素のリストにしています。同じcolumnでも、スカラーの1を渡した場合はブロードキャストの扱いが違い、今回の入力では次の2列が挿入されました。

np.insert(array1, 1, column, axis=1)
# [['A' 'E' 'F' 'B']
#  ['C' 'E' 'F' 'D']]

1と[1]を無条件に置換せず、インデックスとvaluesの形状を組にして確認してください。上に残したaxis=0の元の行追加例は、その入力で正しく動作することを検証しています。

concatenateとの使い分けとdtype

複数の同じ次元数の配列をまとめて結合する場合は、次のconcatenateでも列方向へ結合できます。この入力でappendと同じ結果を確認しました。

combined = np.concatenate((array1, column), axis=1)

appendはPythonのlist.appendと違い、元のndarrayをその場で伸ばす処理ではありません。戻り値を受け取らなければ追加結果を使えません。小さな配列を繰り返しappendするより、値をリストへ集めて最後にまとめて配列化・結合する方法も検討してください。

追加する値によってdtypeが変わることにも注意します。今回の検証ではint64配列へ空のリストをappendするとfloat64になりました。固定長文字列なども、操作と値による変換を実際のdtypeで確認します。

追加前後の確認リスト

  • 元の配列とvaluesのshape・ndim・dtypeを確認する。
  • どの軸へ、何行・何列を追加したいか決める。
  • append/insertの戻り値を受け取り、結果と元の配列を別々に確認する。
  • 空配列・形状不一致・複数位置・バージョン差を、自分の入力で確認する。

公式資料: numpy.append、numpy.insert(2026年10月確認)。検証はNumPy 2.4.4の掲載入力であり、全版・全形状の動作保証ではありません。

Post Share
子ページ

子ページはありません

同階層のページ
  1. 配列の作成
  2. 多次元配列の作成
  3. 要素の参照
  4. 要素の追加
  5. 要素の更新
  6. 要素の削除
  7. ブロードキャスト
  8. 多次元配列の構造の確認
  9. 多次元配列を1次元配列に変換
  10. 1次元配列を多次元配列に変換
  11. NumPy 配列の範囲指定(スライス・多次元・Boolean / Fancy Index)
  12. 平均値の算出
  13. 行列を結合する方法