Iterazione di Array di NumPy

Iterazione dell'array

Iterare significa esplorare gli elementi uno per uno.

Quando lavoriamo con array multidimensionali in numpy, possiamo completare l'operazione utilizzando il ciclo for di base di python.

Se iteriamo un array 1-D, esplorerà ogni elemento una volta.

Esempio

Iterare sui elementi del seguente array 1-D:

import numpy as np
arr = np.array([1, 2, 3])
for x in arr:
  print(x)

Eseguire l'esempio

Iterare su array 2-D

Nel array 2-D, esplorerà tutte le righe.

Esempio

Iterare sui elementi del seguente array bidimensionale:

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
for x in arr:
  print(x)

Eseguire l'esempio

Se iteriamo un array n-D, passerà una volta per la dimensione n-1.

Per restituire il valore effettivo, lo scalare, dobbiamo iterare su ogni dimensione dell'array.

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)

Eseguire l'esempio

Iterare su array 3-D

Nel array 3-D, esplorerà tutti gli array 2-D.

Esempio

Iterare sui elementi del seguente array 3-D:

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)

Eseguire l'esempio

Per restituire il valore effettivo, lo scalare, dobbiamo iterare su ogni dimensione dell'array.

Esempio

Iterare fino al scalare:

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)

Eseguire l'esempio

Utilizzare nditer() per iterare su array

Funzione nditer() È una funzione ausiliaria che può essere utilizzata da un iterazione molto elementare a un iterazione molto avanzata. Risolve alcuni problemi basilari che ci incontriamo durante l'iterazione, e presentiamo attraverso esempi.

Iterare su ogni elemento scalare

In un iterazione di base for Nel ciclo, per iterare su ogni scalare dell'array, dobbiamo utilizzare n for Il ciclo, per array ad alta dimensione può essere difficile da scrivere.

Esempio

Eseguire la scansione del seguente array 3-D:

import numpy as np
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
for x in np.nditer(arr):
  print(x)

Eseguire l'esempio

iterare su array di diversi tipi di dati

Possiamo utilizzare op_dtypes Parametri, e passare il tipo di dati atteso per modificare il tipo di dati degli elementi durante l'iterazione.

NumPy non modifica in loco il tipo di dati degli elementi (gli elementi si trovano nell'array), quindi ha bisogno di uno spazio aggiuntivo per eseguire questa operazione, questo spazio aggiuntivo si chiama buffer, per nditer() Per attivarlo, passiamo come parametri flags=['buffered'].

Esempio

Eseguire la scansione dell'array in forma di stringa:

import numpy as np
arr = np.array([1, 2, 3])
for x in np.nditer(arr, flags=['buffered'], op_dtypes=['S'])
  print(x)

Eseguire l'esempio

Iterazione a passo diverso

Possiamo utilizzare filtri e quindi iterare.

Esempio

Ogni volta che si esplora un elemento scalare della matrice 2D, si salta 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)

Eseguire l'esempio

Iterazione enumerativa con ndenumerate()

Elenca è l'azione di menzionare uno per uno gli elementi in ordine.

A volte, durante l'iterazione, abbiamo bisogno degli indici degli elementi corrispondenti, per questi casi, possiamo utilizzare ndenumerate() Metodo.

Esempio

Elenca gli elementi della seguente matrice 1D:

import numpy as np
arr = np.array([1, 2, 3])
for idx, x in np.ndenumerate(arr):
  print(idx, x)

Eseguire l'esempio

Esempio

Elenca gli elementi della seguente matrice 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)

Eseguire l'esempio