Wie man ein 2D-Array in Python initiiert
- List Verständnismethode zum Initiieren eines 2D-Arrays
-
Verschachtelte
rangeMethode zur Initiierung eines 2D Arrays -
NumPyMethode 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