Hoe een 2D-array in Python te initiëren

  1. Lijstbegrip Methode
  2. Geneste range methode
  3. NumPy Methode

Deze tutorialgids introduceert verschillende methoden om een ​​2D-array in Python te initiëren. We zullen een 3x5 2D-array maken in de volgende voorbeelden.

Beton tegels
Beton tegels

Lijstbegrip Methode

>>> 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]]

Deze geneste lijstbegripmethode maakt een 2D-array met de beginwaarde als 0 . Natuurlijk kan je de beginwaarde wijzigen in elke waarde die u in uw toepassing moet toewijzen.

Geneste range methode

Als u niet om de initiële waarde in de 2D-array geeft, kan de waarde 0 zelfs worden geëlimineerd.

In 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]]

In Python 3.x

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

We konden niet eenvoudigweg gebruiken range(x) om een ​​2D-array in Python 3.x te starten, omdat range een object met een reeks gehele getallen in Python 3.x wordt geretourneerd, maar geen lijst met gehele getallen zoals in Python 2.x.

range in Python 3.x is meer vergelijkbaar met xrange in Python 2.x. range object in Python 3.x is onveranderlijk, daarom wijst u geen items toe aan de elementen.

Als u itemtoewijzing nodig hebt, moet u het range naar list object converteren.

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

[0] * N Methode

Een pythonische manier om een ​​2D-array te initiëren kan zijn

>>> 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]]

Hoewel we voorzichtig moeten zijn wanneer we lijstvermenigvuldiging gebruiken omdat het eenvoudigweg een reeks maakt met meerdere keren verwezen naar hetzelfde object, zijn we opgelucht om [0]*n hier te gebruiken omdat het data-object 0 onveranderlijk is, zodat we nooit problemen zullen ondervinden, zelfs met verwijzingen naar hetzelfde onveranderlijke voorwerp.

NumPy Methode

Naast de native Python-array, NumPy zou dit de beste optie moeten zijn om een ​​2-D-array te maken, of om precies te zijn, een matrix.

Je zou een matrix kunnen maken gevuld met nullen met 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.]])

Of start een matrix gevuld ones met numpy.ones

>>> 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.]])

Je kan zelfs een nieuwe array maken zonder invoer met te initialiseren 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]])

Notes

Het is een betere oplossing als u eerst de lege array wilt maken en later de elementwaarden wilt toewijzen. Maar houd er rekening mee dat willekeurige waarden in de array voorkomen, zodat het riskant kan zijn als u de array opent door te indexeren voordat de waarde van de bijbehorende index is toegewezen.