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 foreiner 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 forSchleifen, 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_dtypesargument 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)