Wie man ein 2D-Array in Python initiiert
- List Verständnismethode zum Initiieren eines 2D-Arrays
-
Verschachtelte
range
Methode zur Initiierung eines 2D Arrays -
NumPy
Methode zur Initiierung eines 2D-Arrays
Dieses Tutorial führt in verschiedene Methoden ein, um ein 2D-Array in Python zu initiieren. In den folgenden Beispielen werden wir ein 3x5
2-D Array erstellen.
List Verständnismethode zum Initiieren eines 2D-Arrays
>>> 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]]
Diese verschachtelte Listenauffassungs-Methode erzeugt ein 2-D Array mit dem Anfangswert 0
. Natürlich können Sie den Initialwert in einen beliebigen Wert ändern, den Sie in Ihrer Anwendung zuweisen müssen.
Verschachtelte range
Methode zur Initiierung eines 2D Arrays
Wenn man sich nicht um den Anfangswert im 2D-Array kümmert, könnte der Wert 0
sogar eliminiert werden.
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)]
In Python 3.x konnten wir range(x)
nicht einfach benutzen, um ein 2D-Array zu initiieren, weil range
in Python 3.x ein Objekt zurückgibt, das eine Folge von ganzen Zahlen enthält, aber nicht eine Liste von ganzen Zahlen wie in Python 2.x.
range
in Python 3.x in ähnlicher Weise wie xrange
in Python 2.x. Das range
Objekt in Python 3.x ist unveränderlich, daher weisen Sie seinen Elementen keine Elemente zu.
Wenn Sie die Zuweisung von Elementen benötigen, müssen Sie das range
in ein list
Objekt konvertieren.
>>> 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, um ein 2D-Array zu initiieren
Eine pythonische Möglichkeit, ein 2D-Array zu initiieren, könnte sein
>>> 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]]
Obwohl wir vorsichtig sein sollten, wenn wir die Listenmultiplikation verwenden, weil sie einfach eine Sequenz mit mehreren Verweisen auf ein und dasselbe Objekt erzeugt, sind wir erleichtert, hier [0]*n
zu verwenden, weil das Datenobjekt 0
unveränderlich ist, so dass wir nie auf Probleme stoßen werden, auch nicht mit Verweisen auf dasselbe unveränderliche Objekt.
NumPy
Methode zur Initiierung eines 2D-Arrays
Neben dem nativen Python-Array sollte NumPy
die beste Option sein, um ein 2-D-Array, genauer gesagt eine Matrix, zu erstellen.
Mit numpy.zeros
könnte man eine mit Nullen gefüllte Matrix erstellen.
>>> 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.]])
Oder eine mit Ones
gefüllte Matrix mit numpy.ones
initiieren.
>>> 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.]])
Sie könnten sogar ein neues Array erstellen, ohne Einträge mit numpy.empty
zu initialisieren.
>>> 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]])
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook