NumPy Array Iteration
Arrays iterieren
Iterieren bedeutet, Elemente einzeln zu durchlaufen.
Da wir uns in numpy mit mehrdimensionalen Arrays befassen, können wir dies mit
for
einer einfachen Python-Schleife tun.
Wenn wir über ein 1-D-Array iterieren, wird es jedes Element einzeln durchlaufen.
Beispiel
Iterieren Sie über die Elemente des folgenden 1-D-Arrays:
import numpy as np
arr = np.array([1, 2, 3])
for x in arr:
print(x)
2D-Arrays iterieren
In einem 2-D-Array werden alle Zeilen durchlaufen.
Beispiel
Iterieren Sie über die Elemente des folgenden 2-D-Arrays:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
for x
in arr:
print(x)
Wenn wir über ein n -D-Array iterieren, wird es nacheinander die n-1-te Dimension durchlaufen.
Um die tatsächlichen Werte, die Skalare, zurückzugeben, müssen wir die Arrays in jeder Dimension durchlaufen.
Beispiel
Iterieren Sie für jedes Skalarelement des 2-D-Arrays:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
for x
in arr:
for y in x:
print(y)
3D-Arrays iterieren
In einem 3-D-Array geht es durch alle 2-D-Arrays.
Beispiel
Iterieren Sie über die Elemente des folgenden 3D-Arrays:
import numpy as np
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9],
[10, 11, 12]]])
for x
in arr:
print(x)
Um die tatsächlichen Werte, die Skalare, zurückzugeben, müssen wir die Arrays in jeder Dimension durchlaufen.
Beispiel
Bis zu den Skalaren iterieren:
import numpy as np
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9],
[10, 11, 12]]])
for x
in arr:
for y in x:
for z in y:
print(z)
Iteration von Arrays mit nditer()
Die Funktion nditer()
ist eine Hilfsfunktion, die von sehr einfachen bis zu sehr fortgeschrittenen Iterationen verwendet werden kann. Es löst einige grundlegende Probleme, denen wir bei der Iteration gegenüberstehen, lassen Sie es uns mit Beispielen durchgehen.
Iteration für jedes Skalarelement
In einfachen for
Schleifen, die durch jeden Skalar eines Arrays iterieren, müssen wir
n
for
Schleifen verwenden, was für Arrays mit sehr hoher Dimensionalität schwierig zu schreiben sein kann.
Beispiel
Durchlaufen Sie das folgende 3D-Array:
import numpy as np
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
for x in np.nditer(arr):
print(x)
Iterierendes Array mit verschiedenen Datentypen
Wir können op_dtypes
argument verwenden und ihm den erwarteten Datentyp übergeben, um den Datentyp von Elementen während der Iteration zu ändern.
NumPy ändert den Datentyp des Elements nicht an Ort und Stelle (wo sich das Element im Array befindet), daher benötigt es etwas anderen Speicherplatz, um diese Aktion auszuführen, dieser zusätzliche Speicherplatz wird Puffer genannt, und um ihn zu aktivieren, nditer()
übergeben wir flags=['buffered']
.
Beispiel
Durchlaufen Sie das Array als String:
import numpy as np
arr = np.array([1, 2, 3])
for x in
np.nditer(arr, flags=['buffered'], op_dtypes=['S']):
print(x)
Iterieren mit unterschiedlicher Schrittweite
Wir können Filtern und anschließend Iteration verwenden.
Beispiel
Iterieren Sie durch jedes skalare Element des 2D-Arrays, wobei 1 Element übersprungen wird:
import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
for x in np.nditer(arr[:, ::2]):
print(x)
Aufgezählte Iteration mit ndenumerate()
Aufzählung bedeutet, die Sequenznummer von Dingen einzeln zu erwähnen.
Manchmal benötigen wir beim Iterieren einen entsprechenden Index des Elements, die ndenumerate()
Methode kann für diese Anwendungsfälle verwendet werden.
Beispiel
Aufzählen der folgenden 1D-Array-Elemente:
import numpy as np
arr = np.array([1, 2, 3])
for idx, x in
np.ndenumerate(arr):
print(idx, x)
Beispiel
Zählen Sie die Elemente des folgenden 2D-Arrays auf:
import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
for idx, x in np.ndenumerate(arr):
print(idx, x)