Pythonで2次元配列を扱う方法

Pythonで2次元配列を扱う方法

Pythonで2次元配列(リストのリスト)を扱う方法について説明します。
2次元配列は、行と列の概念を持つ配列で、リストの中にリストを持つことで実現します。
例えば、以下のように2次元配列を作成します。

matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
]

このmatrixは3×3の2次元配列で、3つの行と3つの列を持っています。
リストの各要素がリストになっていることで、2次元の構造を持つことが可能です。

2次元配列へのアクセス

2次元配列の要素にアクセスするには、行と列のインデックスを指定します。
インデックスは0から始まるため、例えばmatrixの中央の要素(5)にアクセスするには以下のようにします。

central_element = matrix[1][1]
print(central_element)  # 出力: 5

ここで、matrix[1]は2行目のリスト[4, 5, 6]を返し、さらに[1]を指定することで、2行目の2列目の要素である5を取得できます。

2次元配列の反復処理

2次元配列全体を処理する場合、ネストされたループを使用します。
外側のループで行を、内側のループで列を反復処理します。

for row in matrix:
  for element in row:
    print(element, end=' ')
  print()  # 改行

このコードは、matrix内のすべての要素を順に出力します。
end=' 'は、要素を出力した後にスペースを入れるためのもので、print()は各行の出力後に改行します。

2次元配列の操作

2次元配列の要素を変更したり、新しい値を代入することも簡単です。
特定の要素に新しい値を設定するには、インデックスを指定して直接代入します。

matrix[0][0] = 10  # 最初の行、最初の列の要素を10に変更
print(matrix)

また、新しい行を追加したり、既存の行に新しい列を追加することも可能です。

matrix.append([10, 11, 12])  # 新しい行を追加
matrix[0].append(4)          # 最初の行に新しい列を追加
print(matrix)

リスト内包表記を使った2次元配列の作成

Pythonのリスト内包表記を使うと、簡潔に2次元配列を作成できます。
例えば、3×3のゼロ行列を作成するには以下のようにします。

zero_matrix = [[0 for _ in range(3)] for _ in range(3)]
print(zero_matrix)

ここでは、内側のリスト内包表記で1行分の[0, 0, 0]を作成し、外側のリスト内包表記でその行を3回繰り返すことで、3×3の行列が作成されます。

NumPyを使った2次元配列の処理

大規模な2次元配列を効率的に扱いたい場合、NumPyライブラリを使用するのが一般的です。
NumPyを使うと、数学的な操作や大規模データの処理が高速になります。

NumPyを使った2次元配列の作成例を以下に示します。

import numpy as np

matrix = np.array([
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
])

print(matrix)

NumPy配列は通常のリストと似ていますが、多くの数学関数や行列演算が効率的にサポートされています。
例えば、すべての要素を2倍にする場合、次のように簡潔に書けます。

doubled_matrix = matrix * 2
print(doubled_matrix)

まとめると、Pythonではリストを使って2次元配列を簡単に作成・操作でき、さらに高度な操作や大規模なデータ処理にはNumPyライブラリを活用するのが効果的です。
これにより、柔軟かつ効率的に2次元配列を扱うことが可能です。