Acessando Elementos de Arrays NumPy e Iteração

Beginner

Introdução

Neste laboratório, aprenderemos como usar o objeto numpy.nditer para iterar sobre um array NumPy e acessar seus elementos individuais. Também aprenderemos como modificar os elementos de um array usando o parâmetro op_flags do objeto nditer. Por fim, aprenderemos sobre broadcasting em arrays NumPy usando o objeto nditer.

Dicas para a VM

Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.

Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.

Criar um ndarray e iterar sobre ele usando numpy.nditer

Nesta etapa, criaremos um array NumPy unidimensional usando o método arange(), e então iteraremos sobre ele usando o objeto numpy.nditer.

import numpy as np

a = np.arange(0,40,5)

print ("The Original array is:")
print (a)
print ('\n')

## showing elements of array one by one
print ("The Modified array is:")
for x in np.nditer(a):
    print(x)

Iterar sobre a transposta de um array

Nesta etapa, pegaremos um array NumPy bidimensional, encontraremos sua transposta e iteraremos sobre ela usando o objeto nditer.

import numpy as np

a = np.array([[11,2,3,4],[29,4,15,6],[11,21,39,31]])
print("The array is :")
print(a)

print("The transpose of the array is :")
at = a.T
print(at)

print("Iterating over the array:")
for x in np.nditer(at):
    print(x, end=' ')

Iterar sobre um array na ordem C-style e na ordem F-style

Nesta etapa, criaremos um array NumPy bidimensional, encontraremos sua transposta e, em seguida, iteraremos sobre ela tanto na ordem C-style quanto na ordem F-style usando o objeto nditer.

import numpy as np

a = np.array([[1,2,3,4],[8,9,5,6],[10,20,29,31]])
print("\nPrinting the array:\n")
print(a)

print("\nPrinting the transpose of the array:\n")
at = a.T
print(at)

print("\nIterating over the transposed array in F-style order:\n")
for x in np.nditer(at, order='F'):
    print(x, end=' ')

print("\nIterating over the transposed array in C-style order:\n")
for x in np.nditer(at, order='C'):
    print(x, end=' ')

Iterar sobre múltiplos arrays usando broadcasting

Nesta etapa, criaremos dois arrays NumPy de dimensões diferentes e iteraremos sobre eles usando broadcasting com o objeto nditer.

import numpy as np

a = np.arange(0,60,5)
a = a.reshape(3,4)

print ('The First array :')
print (a)
print ('\n')

print ('The Second array is')
b = np.array([1, 2, 3, 4], dtype = int)
print (b)
print ('\n' )

print ('The Modified array is')
for x,y in np.nditer([a,b]):
    print ("%d:%d" %(x,y))

Modificar os valores de um array usando op_flags

Nesta etapa, criaremos um array NumPy unidimensional, iteraremos sobre ele usando o objeto nditer enquanto definimos o parâmetro op_flags como 'readwrite' e, em seguida, modificaremos os elementos do array à medida que iteramos sobre eles.

import numpy as np

a = np.arange(0,50,6)
a = a.reshape(3,3)

print ('The Original array is:')
print (a)
print ('\n')

for x in np.nditer(a, op_flags=['readwrite']):
    x[...] = 2 + x

print ('The Modified array is:')
print (a)

Resumo

Neste laboratório, aprendemos como usar o objeto nditer em NumPy para iterar sobre arrays e como modificar os elementos de um array durante a iteração usando o parâmetro op_flags. Também aprendemos sobre broadcasting em arrays NumPy usando o objeto nditer para iterar sobre múltiplos arrays simultaneamente.