Python で 2 次元配列を開始する方法

胡金庫 2023年1月30日
  1. 2D 配列を開始するリスト内包表記
  2. 2D 配列を開始するネストされた range メソッド
  3. 2D 配列を開始する NumPy メソッド
Python で 2 次元配列を開始する方法

このチュートリアルガイドでは、Python で 2 次元配列を開始するさまざまな方法を紹介します。次の例では、3x5 の 2 次元配列を作成します。

2D 配列を開始するリスト内包表記

>>> column, row = 3, 5
>>> array2D = [[0 for _ in range(row)] for _ in range(column)]
>>> array2D
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

このネストされたリスト内包メソッドは、初期値が 0 の 2 次元配列を作成します。もちろん、アプリケーションで割り当てる必要がある任意の値に初期値を変更できます。

2D 配列を開始するネストされた range メソッド

2 次元配列の初期値を気にしない場合、値 0 を削除することさえできます。

Python 2.x で

>>> column, row = 3, 5
>>> A = [range(row) for _ in range(column)]
>>> A
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]

Python 3.x で

>>> column, row = 3, 5
>>> A = [range(row) for _ in range(column)]
>>> A
[range(0, 5), range(0, 5), range(0, 5)]

range は Python 3.x の整数のシーケンスを含むオブジェクトを返しますが、Python 2.x のような整数のリストは返さないため、Python 3.x で 2 次元配列を開始するために単に range(x) を使用することはできませんでした。

Python 3.x の range は Python 2.x の xrange により類似しています。Python 3.x の range オブジェクトは不変であるため、要素にアイテムを割り当てません。

アイテムの割り当てが必要な場合は、rangelist オブジェクトに変換する必要があります。

>>> A = [list(range(row)) for _ in range(column)]
>>> A
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]

2D 配列を開始する [0] * N メソッド

2 次元配列を開始する Python の方法の 1つは、

>>> column, row = 3, 5
>>> A = [[0]*row for _ in range(column)]
>>> A
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

リストの乗算を使用する場合、同じオブジェクトを複数回参照するシーケンスを作成するだけなので注意が必要ですが、データオブジェクト 0 は不変であるため、ここでは [0]*n を使用できます。同じ不変オブジェクトへの参照であっても問題に遭遇することはありません。

2D 配列を開始する NumPy メソッド

ネイティブ Python 配列に加えて、NumPy は 2 次元配列、またはより正確には行列を作成するための最良のオプションである必要があります。

numpy.zeros でゼロで満たされた行列を作成できます。

>>> import numpy as np
>>> column, row = 3, 5
>>> np.zeros(column, row)
array([[0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.]])

または、numpy.onesones で満たされたマトリックスを開始します

>>> import numpy as np
>>> column, row = 3, 5
>>> np.ones((column, row))
array([[1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.]])

numpy.empty でエントリを初期化せずに新しい配列を作成することもできます

>>> import numpy as np
>>> column, row = 3, 5
>>> np.empty((5,5))
array([[6.23042070e-307, 4.67296746e-307, 1.69121096e-306,
        1.33511562e-306, 1.89146896e-307],
       [7.56571288e-307, 3.11525958e-307, 1.24610723e-306,
        1.37962320e-306, 1.29060871e-306],
       [2.22518251e-306, 1.33511969e-306, 1.78022342e-306,
        1.05700345e-307, 1.11261027e-306],
       [1.11261502e-306, 1.42410839e-306, 7.56597770e-307,
        6.23059726e-307, 1.42419530e-306],
       [7.56599128e-307, 1.78022206e-306, 8.34451503e-308,
        2.22507386e-306, 7.20705877e+159]])
ノート
最初に空の配列を作成し、後で要素値を割り当てる場合は、より良い解決策です。ただし、ランダムな値は配列内にあるため、対応するインデックスの値が割り当てられる前にインデックスを作成して配列にアクセスすると危険になる可能性があります。
著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook

関連記事 - Python Array