Iterazione dell'array NumPy
Array iterativi
Iterare significa passare attraverso gli elementi uno per uno.
Poiché ci occupiamo di array multidimensionali in numpy, possiamo farlo usando il
for
ciclo di base di python.
Se ripetiamo su un array 1-D, passerà attraverso ogni elemento uno per uno.
Esempio
Iterare sugli elementi della seguente matrice 1-D:
import numpy as np
arr = np.array([1, 2, 3])
for x in arr:
print(x)
Iterazione di array 2D
In un array 2-D passerà attraverso tutte le righe.
Esempio
Iterare sugli elementi della seguente matrice 2D:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
for x
in arr:
print(x)
Se iteriamo su un array n -D, passerà attraverso la n-1a dimensione uno per uno.
Per restituire i valori effettivi, gli scalari, dobbiamo iterare gli array in ogni dimensione.
Esempio
Iterare su ogni elemento scalare dell'array 2-D:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
for x
in arr:
for y in x:
print(y)
Iterazione di array 3D
In un array 3D passerà attraverso tutti gli array 2D.
Esempio
Iterare sugli elementi della seguente matrice 3D:
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)
Per restituire i valori effettivi, gli scalari, dobbiamo iterare gli array in ogni dimensione.
Esempio
Iterare fino agli scalari:
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)
Iterare gli array usando nditer()
La funzione nditer()
è una funzione di aiuto che può essere utilizzata da iterazioni molto semplici a molto avanzate. Risolve alcuni problemi di base che affrontiamo nell'iterazione, esaminiamolo con esempi.
Iterazione su ogni elemento scalare
Nei for
loop di base, iterando attraverso ogni scalare di un array è necessario utilizzare
n
for
loop che possono essere difficili da scrivere per array con dimensionalità molto elevata.
Esempio
Iterare attraverso la seguente matrice 3D:
import numpy as np
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
for x in np.nditer(arr):
print(x)
Array iterativo con diversi tipi di dati
Possiamo usare l' op_dtypes
argomento e passargli il tipo di dati previsto per modificare il tipo di dati degli elementi durante l'iterazione.
NumPy non cambia il tipo di dati dell'elemento sul posto (dove l'elemento è nell'array), quindi ha bisogno di altro spazio per eseguire questa azione, quello spazio extra è chiamato buffer e per abilitarlo in nditer()
passiamo flags=['buffered']
.
Esempio
Scorri l'array come una stringa:
import numpy as np
arr = np.array([1, 2, 3])
for x in
np.nditer(arr, flags=['buffered'], op_dtypes=['S']):
print(x)
Iterazione con diverse dimensioni del passaggio
Possiamo usare il filtraggio e seguito dall'iterazione.
Esempio
Iterare attraverso ogni elemento scalare dell'array 2D saltando 1 elemento:
import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
for x in np.nditer(arr[:, ::2]):
print(x)
Iterazione enumerata usando ndenumerate()
Enumerazione significa menzionare il numero di sequenza di qualcosa uno per uno.
A volte è necessario l'indice corrispondente dell'elemento durante l'iterazione, il ndenumerate()
metodo può essere utilizzato per quei casi d'uso.
Esempio
Enumera i seguenti elementi di array 1D:
import numpy as np
arr = np.array([1, 2, 3])
for idx, x in
np.ndenumerate(arr):
print(idx, x)
Esempio
Enumera sui seguenti elementi dell'array 2D:
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)