Python で 2D 配列を追加する
- ネストされたリスト(Python リスト)の使用
- リスト内包表記の使用
- NumPy 配列の使用
-
numpy.hstack()
とnumpy.vstack()
の使用 -
+=
演算子の使用 -
extend()
を使用して複数の行を追加する -
insert()
を使用して特定のインデックスに行を追加する - ネストされたループを使用して動的に 2 次元配列を生成する
- 結論

Python で 2 次元配列に値を追加することは、データ操作、数値計算、データサイエンスアプリケーションで一般的な操作です。ネイティブの Python リストを使用する場合や、効率を重視して NumPy を使用する場合、2 次元配列に行、列、または個々の値を追加するための複数の方法があります。このガイドでは、さまざまなテクニック、その利点、および使用例について探っていきます。
ネストされたリスト(Python リスト)の使用
Python の組み込みリストは、リストのリストとして 2 次元配列を表現できます。値を追加する最も簡単な方法は、append()
メソッドを使用することです。
新しい行を追加する
array = [[1, 2, 3], [4, 5, 6]]
array.append([7, 8, 9])
print(array)
出力:
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
この方法は、既存のリストに完全に新しい行を追加します。append()
メソッドは、時間の経過とともにデータを動的に拡張したい場合に便利です。ただし、構造化されたデータ処理を行うためには、すべての行が同じ長さである必要があることに注意してください。
既存の行に値を追加する
array[0].append(10)
print(array)
出力:
[[1, 2, 3, 10],
[4, 5, 6],
[7, 8, 9]]
この方法は、特定の行を変更して新しい要素を追加します。新しい行を追加するのとは異なり、この操作は指定された行にのみ影響を与えるため、適切に管理しないと不規則な列構造になる可能性があります。
リスト内包表記の使用
リスト内包表記は、2 次元リストのすべての行に値を追加するエレガントな方法を提供します。
array = [[1, 2], [3, 4]]
array = [row + [5] for row in array]
print(array)
出力:
[[1, 2, 5],
[3, 4, 5]]
この方法は、各行に新しい列を効率的に追加します。各行を反復処理して値を追加することで、リスト内包表記は新しい列がすべての行に均一に追加されることを保証します。
NumPy 配列の使用
NumPy は、2 次元配列に値を効率的に追加するための強力なメソッドを提供します。ただし、多くの空の値を含む大規模なデータセットを扱う場合、スパース行列を使用することでメモリ消費を大幅に削減できます。Python での[スパース行列]({{relref “/HowTo/Python/sparse matrix in python.en.md”}})について詳しく学び、ストレージを最適化する方法を確認してください。
numpy.append()
の使用
import numpy as np
array = np.array([[1, 2], [3, 4]])
array = np.append(array, [[5, 6]], axis=0)
print(array)
出力:
[[1 2]
[3 4]
[5 6]]
この方法は、NumPy 配列に新しい行を追加します。numpy.append()
関数は、大規模なデータセットを扱う場合に便利です。ネイティブの Python リストと比較して、効率的なメモリ管理を保証します。
新しい列を追加するには:
array = np.append(array, [[7], [8], [9]], axis=1)
print(array)
出力:
[[1 2 7]
[3 4 8]
[5 6 9]]
値を追加した後、後で使用するために変更された配列をファイルに保存する必要があるかもしれません。NumPy 配列を効率的に保存する方法については、[テキストファイルに配列を書き込む方法]({{relref “/HowTo/Python/write array to a textfile.ja.md”}})のガイドを参照してください。
NumPy 配列を変更する際にインデックスエラーが発生した場合は、「Too Many Indices for Array」エラーの修正のガイドを参照して、一般的なミスをトラブルシューティングしてください。
numpy.hstack()
と numpy.vstack()
の使用
NumPy の hstack()
と vstack()
関数は、列や行を効率的に追加するために設計されています。
hstack()
を使用して列を追加する
import numpy as np
array = np.array([[1, 2], [3, 4]])
new_column = np.array([[5], [6]])
result = np.hstack((array, new_column))
print(result)
出力:
[[1 2 5]
[3 4 6]]
vstack()
を使用して行を追加する
new_row = np.array([[5, 6]])
result = np.vstack((array, new_row))
print(result)
出力:
[[1 2]
[3 4]
[5 6]]
これらの方法は効率的であり、大規模なデータセットを扱う場合に推奨されます。numpy.append()
とは異なり、hstack()
と vstack()
は列単位および行単位の拡張に最適化されています。
構造化された数値データを扱う場合、データを効率的に再形成するために行列を転置する必要があるかもしれません。Python での行列の転置に関する記事をチェックしてください。
+=
演算子の使用
array = [[1, 2], [3, 4]]
array += [[5, 6]]
print(array)
出力:
[[1, 2],
[3, 4],
[5, 6]]
この方法は、append()
の短縮形ですが、リストをその場で変更します。+=
を使用することで、新しい行が新しい参照を作成せずに直接追加されるため、小さな 2 次元リストを扱う場合に効率的なアプローチです。
extend()
を使用して複数の行を追加する
array = [[1, 2], [3, 4]]
array.extend([[5, 6], [7, 8]])
print(array)
出力:
[[1, 2],
[3, 4],
[5, 6],
[7, 8]]
これは、一度に複数の行を追加する場合に便利です。extend()
メソッドは、異なるソースからのデータを単一の 2 次元リストにマージする場合に特に役立ちます。
更新されたリストを CSV ファイルとして保存する必要がある場合は、Python でリストを CSV ファイルに書き込む方法のガイドをチェックしてください。
insert()
を使用して特定のインデックスに行を追加する
array = [[1, 2], [3, 4]]
array.insert(1, [5, 6])
print(array)
出力:
[[1, 2],
[5, 6],
[3, 4]]
insert()
メソッドを使用すると、配列内の特定の位置に行を正確に挿入できます。これは、新しいエントリを特定の位置に挿入する必要がある順序付けられたデータセットを扱う場合に便利です。
ネストされたループを使用して動的に 2 次元配列を生成する
array = []
for i in range(3):
row = []
for j in range(2):
row.append(i * j)
array.append(row)
print(array)
出力:
[[0, 0],
[0, 1],
[0, 2]]
この方法は、構造化された 2 次元配列を動的に生成する場合に便利です。ネストされたループを使用することで、データがどのように生成されるかを完全に制御できるため、行列やグリッドベースの構造をプログラムで生成するのに理想的です。
結論
Python では、2 次元配列に値を追加するための複数の方法が提供されています。標準のリストを扱う場合、append()
、extend()
、およびリスト内包表記が効果的な選択肢です。高性能な数値演算を行う場合、NumPy の append()
、hstack()
、および vstack()
が最適化されたソリューションを提供します。適切な方法は、小さなリストを扱うか、大規模な数値データを扱うかによって異なります。
メソッドの比較
メソッド | 適している用途 | 柔軟性 | パフォーマンス |
---|---|---|---|
append() |
行の追加(Python リスト) | 高い | 中程度 |
リスト内包表記 |
列の追加(Python リスト) | 中程度 | 高い |
numpy.append() |
行/列の追加(NumPy) | 高い | 高い |
hstack() / vstack() |
行/列の効率的な追加(NumPy) | 高い | 非常に高い |
+= 演算子 |
行の迅速な追加(Python リスト) | 低い | 高い |
extend() |
複数の行の追加(Python リスト) | 中程度 | 高い |
insert() |
特定のインデックスに挿入(Python リスト) | 中程度 | 中程度 |
ネストされたループ | 動的なデータ生成 | 高い | 可変 |