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

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

Pythonで多次元配列を扱う際には、主にリストのリストを使用します。
多次元配列は、リストの中にさらにリストが含まれている構造を持つもので、通常は二次元または三次元配列として扱われます。

二次元配列の基本的な使い方

二次元配列はリストのリストとして表現されます。
例えば、以下のように定義することができます。

# 2x3の二次元配列を作成
matrix = [
  [1, 2, 3],
  [4, 5, 6]
]

この場合、matrixは2つのリストを持ち、それぞれのリストが3つの要素を含んでいます。
この配列にアクセスするには、インデックスを二重に指定します。

# 要素へのアクセス
print(matrix[0][1])  # 出力: 2
print(matrix[1][2])  # 出力: 6

多次元配列の操作

多次元配列に対して様々な操作を行うことができます。

1. 要素の更新:
要素を更新するには、指定した位置に新しい値を代入します。

matrix[1][2] = 9
print(matrix)  # 出力: [[1, 2, 3], [4, 5, 9]]

2. ループを使った操作:
二次元配列をループで処理することが一般的です。
例えば、すべての要素を出力するには以下のようにします。

for row in matrix:
  for elem in row:
    print(elem, end=' ')
  print()

3. 行と列の操作:
行や列を操作することもできます。
例えば、すべての列を取得したい場合、以下のような方法が考えられます。

# 列の取得
def get_column(matrix, col_index):
  return [row[col_index] for row in matrix]

print(get_column(matrix, 1))  # 出力: [2, 5]

三次元配列の使用

三次元配列もリストのリストのリストで表現されます。
例えば、以下のように定義します。

# 2x3x2の三次元配列
tensor = [
  [
    [1, 2],
    [3, 4],
    [5, 6]
  ],
  [
    [7, 8],
    [9, 10],
    [11, 12]
  ]
]

この場合、tensorは2つのリストを持ち、それぞれのリストが3つのリストを持ち、さらにそれぞれが2つの要素を含んでいます。
要素にアクセスするには、三重のインデックスを指定します。

# 要素へのアクセス
print(tensor[0][1][1])  # 出力: 4
print(tensor[1][2][0])  # 出力: 11

NumPyライブラリの利用

Pythonの標準ライブラリでは多次元配列の操作は限られていますが、NumPyライブラリを使用することでより効率的に扱うことができます。
NumPyは、数値計算や行列演算を行うためのライブラリで、多次元配列(ndarray)をサポートしています。

以下はNumPyを使って二次元配列を作成し、基本的な操作を行う例です。

import numpy as np

# 2x3の二次元配列を作成
matrix_np = np.array([
  [1, 2, 3],
  [4, 5, 6]
])

# 要素へのアクセス
print(matrix_np[0, 1])  # 出力: 2
print(matrix_np[1, 2])  # 出力: 6

# 行列の転置
transposed = matrix_np.T
print(transposed)

NumPyを使うことで、多次元配列の操作がより簡単になり、高度な数学的操作やデータ解析が可能になります。

以上が、Pythonで多次元配列を扱う基本的な方法です。
リストのリストを使った方法とNumPyライブラリを使った方法の両方を理解しておくと、多様なデータ構造を効率よく扱うことができます。