Iteração de Matrizes NumPy

Iteração de array

Iterar significa percorrer os elementos uma vez.

Quando lidamos com arrays multidimensionais no numpy, podemos usar loops básicos do python para realizar essa operação.

Se iterarmos um array 1-D, ele vai percorrer cada elemento uma vez.

Exemplo

Iterar sobre os elementos do seguinte array unidimensional:

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

Executar Exemplo

Iterar sobre o array 2-D

No array 2-D, ele vai percorrer todas as linhas.

Exemplo

Iterar sobre os elementos do seguinte array bidimensional:

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

Executar Exemplo

Se iterarmos um array n-D, ele vai percorrer a dimensão n-1 uma vez.

Para retornar valores reais, escalares, devemos iterar sobre o array em cada dimensão.

Exemplo

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

Executar Exemplo

Iterar sobre o array 3-D

No array 3-D, ele vai percorrer todos os arrays 2-D.

Exemplo

Iterar sobre os elementos do seguinte 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)

Executar Exemplo

Para retornar valores reais, escalares, devemos iterar sobre o array em cada dimensão.

Exemplo

Iterar até o 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)

Executar Exemplo

usar nditer() para iterar sobre o array

função nditer() é uma função auxiliar, que pode ser usada de iterações muito básicas a muito avançadas. Ela resolve alguns problemas básicos que enfrentamos em iterações, vamos apresentar por exemplo.

iterar sobre cada elemento escalar

No básico for No loop, iteramos sobre cada escalar do array, precisamos usar n for Loop, pode ser difícil escrever para arrays com alta dimensão.

Exemplo

Varre o seguinte 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)

Executar Exemplo

iterar sobre arrays de diferentes tipos de dados

Podemos usar op_dtypes Parâmetros, e passe o tipo de dados esperado, para alterar o tipo de dados dos elementos durante a iteração.

O NumPy não altera o tipo de dados dos elementos localmente (os elementos estão dentro do array), portanto, ele precisa de um pouco mais de espaço para executar essa operação, esse espaço extra chamado buffer, nditer() Ao ativá-lo, passamos os parâmetros flags=['buffered'].

Exemplo

Navegação por string no array:

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

Executar Exemplo

Iteração com diferentes passos

Podemos usar filtragem e então iterar.

Exemplo

Pule 1 elemento a cada vez que percorrer um elemento escalar da matriz 2D:

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

Executar Exemplo

Iteração Enumeração com ndenumerate()

Enumeração é mencionar a ordem de coisas um por um.

Às vezes, precisamos dos índices correspondentes dos elementos ao iterar, para esses casos, podemos usar ndenumerate() Método.

Exemplo

Enumere os elementos da seguinte matriz 1D:

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

Executar Exemplo

Exemplo

Enumere os elementos da seguinte matriz 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)

Executar Exemplo