Iteração da matriz NumPy

Neste artigo, daremos a você uma compreensão mais profunda da iteração de matriz NumPy e o ajudaremos a escolher o melhor método para seu caso de uso específico.

vamos explorar os vários métodos para iterar em um array NumPy e entender suas características, vantagens e limitações. Seja você um iniciante ou um usuário experiente do NumPy.



Iteração da Matriz NumPy

As matrizes NumPy são uma estrutura de dados fundamental na pilha de computação científica do Python , usada para representar e manipular grandes quantidades de dados numéricos.

Iterar sobre os elementos de um array NumPy é uma tarefa comum que pode ser executada de várias maneiras.

A iteração de itens da matriz Numpy significa iterar cada item, um de cada vez.

No numpy, podemos utilizar o loop for simples do Python para manipular matrizes multidimensionais.

Uma matriz de itens unidimensionais será iterada um a um se iterarmos nela.

O código abaixo importa a biblioteca numpy e cria um array numpy company_arr com os valores [ 1, 2, 3 ]. Em seguida, itera sobre a matriz usando um loop for e imprime cada valor na matriz, mrx .

Example: 

1
2
3
4
5
6
import numpy as npy
comapny_arr = npy.array(["MICROSOFT", "ORACLE", "SAP", "IBM", "ADOBE"])
for mrx in comapny_arr:
print(mrx)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Exemplo de iteração de matriz NumPy

Utilizando o seguinte array cgpa_arr como ponto de partida, percorra seus componentes:

Example: 

1
2
3
4
5
6
import numpy as npy
cgpa_arr = npy.array([3.41, 2.69, 3.82, 394, 4])
for mrx in cgpa_arr:
print(mrx)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 


Iteração de Matriz NumPy 2-D

A iteração da matriz Numpy percorre cada linha em uma matriz bidimensional.

Utilizando o código abaixo, criamos um array numpy 2D chamado company_arr com dois sub-arrays, cada um contendo uma lista de nomes de empresas. Depois disso, ele usa um loop for para iterar sobre o array 2D e imprimir cada sub-array, mrx .

Example: 

1
2
3
4
5
6
import numpy as npy
company_arr = npy.array([["MICROSOFT", "ORACLE", "SAP", "IBM"], ["SAP SE", "Fiserv", "ADP", "Broadcom"]])
for mrx in company_arr:
print(mrx)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Aplicando a matriz bidimensional, percorra os dados da seguinte maneira:

Example: 

1
2
3
4
5
6
import numpy as npy
nba_arr = npy.array([["Toronto Raptors", "Chicago Bulls", "Cleveland Cavaliers", "Detroit Pistons"], ["Philadelphia 76ers", "New York Knicks", "Boston Celtics", "Miami Heat"]])
for mrx in nba_arr:
print(mrx)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Na iteração de matriz Numpy, se iterarmos sobre uma matriz nD, percorremos n-1 dimensões sequencialmente.

Em cada dimensão, somos obrigados a percorrer os arrays para obter os valores reais, os escalares.

Existem duas listas na matriz, cada uma contendo quatro elementos. Essas listas são chamadas de “ mrx ” no primeiro loop “for”.

O segundo loop “for” imprime cada elemento dentro de cada lista, que são referidos como “ amplo ”:

Example: 

1
2
3
4
5
6
7
import numpy as npy
company_arr = npy.array([["MICROSOFT", "ORACLE", "SAP", "IBM"], ["SAP SE", "Fiserv", "ADP", "Broadcom"]])
for mrx in company_arr:
for ample in mrx:
print(ample)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Para cada objeto escalar bidimensional, execute as seguintes iterações:

Example: 

1
2
3
4
5
6
7
import numpy as npy
nba_arr = npy.array([["Toronto Raptors", "Chicago Bulls", "Cleveland Cavaliers", "Detroit Pistons"], ["Philadelphia 76ers", "New York Knicks", "Boston Celtics", "Miami Heat"]])
for mrx in nba_arr:
for ample in mrx:
print(ample)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Iterando Arrays 3-D

A iteração da matriz Numpy em uma matriz tridimensional deve passar por todas as matrizes bidimensionais.

Utilizando o seguinte array tridimensional cgpa_arr , percorra os itens:

Example: 

1
2
3
4
5
6
import numpy as npy
cgpa_arr = npy.array([[[2.33, 2.48, 2.66, 2.83], [3.15, 3.24, 3.33, 3.45]], [[3.5, 3.58, 3.63, 3.67], [3.7, 3.74, 3.89, 3.99]]])
for mrx in cgpa_arr:
print(mrx)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Você pode percorrer os componentes na seguinte matriz tridimensional chamando nba_arr :

Example: 

1
2
3
4
5
6
import numpy as npy
nba_arr = npy.array([[["Toronto Raptors", "Chicago Bulls", "Cleveland Cavaliers", "Detroit Pistons"], ["Philadelphia 76ers", "New York Knicks", "Boston Celtics", "Miami Heat"]], [["LA Clippers", "Los Angeles Lakers", "Phoenix Suns", "New Orleans Pelicans"], ["Memphis Grizzlies", "Dallas Mavericks", "Houston Rockets", "San Antonio Spurs"]]])
for mrx in nba_arr:
print(mrx)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Em cada dimensão, precisamos percorrer os arrays para recuperar os valores verdadeiros, os escalares.

Para chegar aos escalares, percorra da seguinte forma:

Example: 

1
2
3
4
5
6
7
8
9
import numpy as npy
even_arr = npy.array([[[0, 2, 4, 6], [8, 10, 12, 14]], [[16, 18, 20, 22],
[24, 26, 28, 30]]])
for mrx1 in even_arr:
for mrx2 in mrx1:
for mrx3 in mrx2:
print(mrx3)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Para obter os escalares, percorra abaixo:

Example: 

1
2
3
4
5
6
7
8
9
import numpy as npy
odd_arr = npy.array([[[1, 3, 5, 7], [9, 11, 13, 15]], [[17, 19, 21, 23],
[25, 27, 29, 31]]])
for ample1 in odd_arr:
for ample2 in ample1:
for ample3 in ample2:
print(ample3)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Iteração de matriz NumPy usando nditer ()

Uma função de ajuda, nditer() , pode ser invocada para uma ampla gama de iterações, desde o início até o mais avançado.

Vamos dar uma olhada nos exemplos de iteração do array Numpy para ver como ele resolve alguns problemas simples de iteração.

Para matrizes de alta dimensão, você deve aplicar n loops for para iterar em cada escalar em um loop for simples.

Repita a matriz tridimensional watch_arr abaixo várias vezes:

Example: 

1
2
3
4
5
6
import numpy as npy
watch_arr = npy.array([[["Cartier Santos", "Jaeger-LeCoultre Reverso"], ["IWC Pilot's Watch", "Patek Philippe Perpetual Calendar Chronograph"]], [["Rolex Datejust", "Breitling Navitimer"], ["Rolex Submariner", "Omega Speedmaster"]]])
for mrx in npy.nditer(watch_arr):
print(mrx)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Execute iterações no array tridimensional singer_arr abaixo:

Example: 

1
2
3
4
5
6
import numpy as npy
singer_arr = npy.array([[["Ariana Grande", "Michael Jackson"], ["Taylor Swift", "XXXTentacion"]], [["Eminem", "Elvis Presley"], ["Tupac Shakur", "Lady Gaga"]]])
for mrx in npy.nditer(singer_arr):
print(mrx)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Tipos de dados de iteração de matriz NumPy

O argumento op_dtypes pode ser utilizado para modificar os tipos de dados do objeto durante a iteração sobre o tipo de dados esperado.

Como o NumPy não modifica o tipo de dados do item no local (em arrays), ele requer algum espaço extra para isso, que é chamado de buffer, que é ativado por flags=['buffered'] em nditer () .

Uma representação de string de loop através da matriz fatorial_arr é a seguinte:

Example: 

1
2
3
4
5
6
import numpy as npy
factorial_arr = npy.array([1, 2, 6, 24, 120])
for mrx in npy.nditer(factorial_arr, flags=['buffered'], op_dtypes=['S']):
print(mrx)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

A string fornecida indica a travessia do array fibonacci_arr :

Example: 

1
2
3
4
5
6
import numpy as npy
fibonacci_arr = npy.array([0, 1, 1, 2, 3, 5, 8])
for mrx in npy.nditer(fibonacci_arr, flags=['buffered'], op_dtypes=['S']):
print(mrx)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 


Tamanho da etapa de iteração da matriz NumPy

Podemos aplicar a filtragem e prosseguir com o processo de iteração.

Simplesmente pule um item escalar enquanto percorre o array bidimensional singer_arr :

Example: 

1
2
3
4
5
6
import numpy as npy
singer_arr = npy.array([["Ariana Grande", "Michael Jackson", "Taylor Swift", "XXXTentacion"], ["Eminem", "Elvis Presley", "Tupac Shakur", "Lady Gaga"]])
for mrx in npy.nditer(singer_arr[:, ::3]):
print(mrx)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Ao percorrer a matriz fibonacci_arr, pule um componente escalar:

Example: 

1
2
3
4
5
6
import numpy as npy
fibonacci_arr = npy.array([[0, 1, 1, 2, 3], [5, 8, 13, 21, 34]])
for mrx in npy.nditer(fibonacci_arr[1:, ::3]):
print(mrx)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 


NumPy Array Iteração ndenumerate()

De acordo com sua sequência, a enumeração refere-se a listar o número do pedido de algo.

O método ndenumerate() pode ser utilizado quando exigimos o índice associado de um item durante a iteração.

Liste os componentes dos seguintes arrays unidimensionais company_arr :

Example: 

1
2
3
4
5
6
import numpy as npy
company_arr = npy.array(["MICROSOFT", "ORACLE", "SAP", "IBM", "ADOBE"])
for mrx, ample in npy.ndenumerate(company_arr):
print(mrx, ample)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Os itens da matriz unidimensional fatorial_arr abaixo precisam ser enumerados:

Example: 

1
2
3
4
5
6
import numpy as npy
factorial_arr = npy.array([0, 1, 2, 6, 24, 120])
for mrx, ample in npy.ndenumerate(factorial_arr):
print(mrx, ample)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

No exemplo abaixo, vamos enumerar os componentes do seguinte array bidimensional nba_arr:

Example: 

1
2
3
4
5
6
import numpy as npy
nba_arr = npy.array([["Toronto Raptors", "Chicago Bulls", "Cleveland Cavaliers", "Detroit Pistons"], ["Philadelphia 76ers", "New York Knicks", "Boston Celtics", "Miami Heat"]])
for mrx, ample in npy.ndenumerate(nba_arr):
print(mrx, ample)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

A seguir está uma enumeração dos itens de um array bidimensional watch_arr:

Example: 

1
2
3
4
5
6
import numpy as npy
watch_arr = npy.array(["Cartier Santos", "Jaeger-LeCoultre Reverso", "IWC Pilot's Watch", "Patek Philippe Perpetual Calendar Chronograph", "Rolex Datejust", "Breitling Navitimer", "Rolex Submariner", "Omega Speedmaster"])
for mrx, ample in npy.ndenumerate(watch_arr):
print(mrx, ample)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Nós valorizamos o seu feedback.
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0

Assine a nossa newsletter
Digite seu e-mail para receber um resumo semanal de nossos melhores posts. Saber mais!
ícone