HOWTO · Python

So deklarieren Sie ein 3D-Array in Python

Es gibt 3 Hauptmethoden, mit denen ein 3D-Array in Python deklariert werden kann: die List Comprehensions, die Multiplikationsmethode und das numpy-Paket.

Auf dieser Seite

Eine dreidimensionale Struktur in Python kann eine verschachtelte Liste oder ein NumPy ndarray sein. Verwenden Sie verschachtelte List Comprehensions für unabhängige Python-Listen, die Listenmultiplikation nur dann, wenn ihre gemeinsamen Referenzen akzeptabel sind, oder NumPy für numerische Array-Operationen.

3D-Liste mithilfe von List Comprehensions in Python deklarieren

Eine verschachtelte List Comprehension erstellt gewöhnliche Python-Listen, wobei auf jeder Ebene eine neue innere Liste erzeugt wird. Die unten stehende Syntax der List Comprehension erzeugt eine mit Nullen gefüllte Struktur der Form 2 × 2 × 2: zwei äußere Elemente, die jeweils zwei Zeilen mit zwei Werten enthalten.

Führen Sie dieses Beispiel aus:

n = 2
distance = [[[0 for k in range(n)] for j in range(n)] for i in range(n)]

print(distance)
print((len(distance), len(distance[0]), len(distance[0][0])))

Die drei verschachtelten Schleifen entsprechen den drei Dimensionen. Ändern Sie n oder verwenden Sie für jedes range eine andere Größe, um eine nicht-kubische Form zu erstellen.

3D-Liste mithilfe der Multiplikationsmethode in Python deklarieren

Der Operator * wiederholt eine Liste, kopiert aber die darin enthaltenen Listen nicht rekursiv. Im folgenden Ausdruck verweisen die wiederholten Positionen auf dieselben inneren Listen. Das Aktualisieren einer Position kann daher andere Positionen ändern, die sich diese Liste teilen:

n = 2
distance = [[[0] * n] * n] * n
distance[0][0][0] = 7
print(distance)

Für unabhängige verschachtelte Listen verwenden Sie auf jeder Ebene eine Comprehension, wie zum Beispiel [[[0] * n for _ in range(n)] for _ in range(n)]. Die Multiplikation eignet sich zum Wiederholen unveränderlicher Werte oder wenn gemeinsame Referenzen beabsichtigt sind; sie ist der Comprehension für veränderliche verschachtelte Daten nicht gleichwertig.

3D-Array mithilfe des NumPy-Pakets in Python deklarieren

Verwenden Sie NumPy, wenn Sie ein ndarray und numerische Operationen über seine Achsen benötigen. Es ist ein externes Paket; installieren Sie es in der von Ihrem Projekt verwendeten Python-Umgebung mit pip install numpy, bevor Sie dieses Beispiel ausführen. Das Form-Tupel gibt die Größe jeder Achse an, und np.zeros füllt das Array mit Nullen. Sein Standard-dtype ist float.

try:
    import numpy as np
except ImportError:
    print("NumPy is not installed in this Python environment.")
else:
    new_array = np.zeros((2, 2, 2))
    print(new_array.shape)
    print(new_array.dtype)

Die angezeigten Werte eines NumPy-Arrays sind anders formatiert als die einer verschachtelten Liste, aber sowohl die Dimensionen als auch die Nullinitialisierung werden durch die an np.zeros übergebene Form festgelegt. Für ganzzahlige Nullen übergeben Sie dtype=int, zum Beispiel np.zeros((2, 2, 2), dtype=int). Weitere Einzelheiten finden Sie in der NumPy-Übersicht und der np.zeros-Referenz.