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.