Python Programming

Pythonで2次元配列を作る

Spread the love

二次元配列、または行列は、プログラミングにおける基本的なデータ構造であり、画像処理、線形代数、ゲーム開発などのタスクに特に重要です。Pythonには、一部の言語(例:C++)のような組み込みの2次元配列型はありませんが、効率的でエレガントな作成と操作方法をいくつか提供しています。この記事では、リスト内包表記、ネストされたループ、そして強力なNumPyライブラリの3つの一般的なアプローチについて説明します。

目次

リスト内包表記メソッド

リスト内包表記は、特に数式やパターンから生成された値で初期化する場合に、2次元配列を作成するための簡潔でPython的な方法を提供します。外側のループが行を、内側のループが列を処理する、ネストされたリスト内包表記を使用します。


# 0で埋められた3x4配列
rows = 3
cols = 4
array_2d = [[0 for _ in range(cols)] for _ in range(rows)]
print(array_2d)  # 出力: [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

# 行と列のインデックスに基づいた値を持つ3x3配列
array_2d = [[i + j for j in range(3)] for i in range(3)]
print(array_2d)  # 出力: [[0, 1, 2], [1, 2, 3], [2, 3, 4]]

# ランダムな数値を持つ2x2配列(randomのインポートが必要)
import random
array_2d = [[random.randint(1,10) for _ in range(2)] for _ in range(2)]
print(array_2d) # 出力: (例)[[7, 2], [9, 5]]

ネストされたループメソッド

このアプローチは、rangeを使ったネストされたforループを使用して、行と列を反復処理し、要素ごとに配列を構築します。リスト内包表記よりも冗長ですが、初心者にとって理解しやすい場合があります。


rows = 3
cols = 4

array_2d = []
for i in range(rows):
    row = []
    for j in range(cols):
        row.append(0)  # またはその他の初期化値
    array_2d.append(row)

print(array_2d)  # 出力: [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

rows = 3
cols = 3
array_2d = []
for i in range(rows):
    row = []
    for j in range(cols):
        row.append(i*cols + j) # 連番で埋める例
    array_2d.append(row)
print(array_2d) # 出力: [[0, 1, 2], [3, 4, 5], [6, 7, 8]]

NumPy配列

NumPyは、Pythonにおける数値計算のための強力なライブラリです。そのnumpy.array()関数は、多次元配列の効率的な作成と操作を提供します。NumPy配列は、数値演算においてPythonリストよりも大幅に高速なパフォーマンスを提供します。


import numpy as np

# 0で埋められた3x4配列
array_2d = np.zeros((3, 4))
print(array_2d)

# 1で埋められた3x3配列
array_2d = np.ones((3, 3))
print(array_2d)

# 特定の値で埋められた2x2配列
array_2d = np.full((2, 2), 7)
print(array_2d)

# 3x3単位行列
array_2d = np.eye(3)
print(array_2d)

# 0と1の間のランダムな数値を持つ2x3配列
array_2d = np.random.rand(2, 3)
print(array_2d)

# 1から10の間のランダムな整数を持つ2x2配列
array_2d = np.random.randint(1, 11, size=(2,2))
print(array_2d)

NumPyは、さまざまな値とパターンで配列を初期化するためのさまざまな関数を提供しており、2次元配列を含む数値計算に最適な選択肢となっています。これらの関数を使用する前に、import numpy as npを覚えておいてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です