Iteración de array de NumPy

Iteración de array

Iterar significa recorrer elementos paso a paso.

Cuando trabajamos con arrays multidimensionales en numpy, podemos usar bucles for básicos de python para realizar esta operación.

Si iteramos un array 1-D, recorrerá cada elemento paso a paso.

Ejemplo

Iterar los elementos del siguiente array unidimensional:

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

Ejecutar ejemplo

Iterar el array 2-D

En el array 2-D, recorrerá todas las filas.

Ejemplo

Iterar los elementos del siguiente array bidimensional:

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

Ejecutar ejemplo

Si iteramos un array n-D, recorrerá la dimensión n-1 paso a paso.

Para devolver valores reales, escalares, debemos iterar cada array en cada dimensión.

Ejemplo

Iterar cada elemento escalar del 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)

Ejecutar ejemplo

Iterar el array 3-D

En el array 3-D, recorrerá todos los arrays 2-D.

Ejemplo

Iterar los elementos del siguiente 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)

Ejecutar ejemplo

Para devolver valores reales, escalares, debemos iterar cada array en cada dimensión.

Ejemplo

Iterar hasta el escalar:

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)

Ejecutar ejemplo

Usar nditer() para iterar el array

Función nditer() Es una función auxiliar que se puede usar desde iteraciones muy básicas hasta muy avanzadas. Resuelve algunos problemas básicos que enfrentamos en la iteración, y vamos a presentar ejemplos.

Iterar cada elemento escalar

En la iteración básica for En el bucle, iteramos sobre cada escalar del array, y necesitamos usar n for El bucle puede ser difícil de escribir para arrays de alta dimensión.

Ejemplo

Recorrer el siguiente 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)

Ejecutar ejemplo

Iterar diferentes tipos de datos de arrays

Podemos usar op_dtypes Parámetros, y transfiere el tipo de datos esperado para cambiar el tipo de datos de los elementos en la iteración.

NumPy no cambia el tipo de datos de los elementos en lugar (los elementos están en el array), por lo que necesita algo de espacio adicional para realizar esta operación, este espacio adicional se llama buffer, para en nditer() Al activarlo en flags=['buffered'].

Ejemplo

Recorrer el array en forma de cadena:

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

Ejecutar ejemplo

Iteración con diferentes pasos

Podemos usar un filtro y luego realizar la iteración.

Ejemplo

Al recorrer cada elemento escalar de un array 2D, saltar 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)

Ejecutar ejemplo

Iteración de enumeración usando ndenumerate()

La enumeración es la mención de la secuencia de las cosas.

A veces, necesitamos los índices correspondientes de los elementos durante la iteración, para estos casos, se puede usar ndenumerate() Método.

Ejemplo

Enumere los elementos del siguiente array 1D:

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

Ejecutar ejemplo

Ejemplo

Enumere los elementos del siguiente 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)

Ejecutar ejemplo