Acceso a elementos de arrays en Numpy y iteración

Beginner

Introducción

En este laboratorio, aprenderemos a usar el objeto numpy.nditer para iterar sobre una matriz NumPy y acceder a sus elementos individuales. También aprenderemos a modificar los elementos de una matriz usando el parámetro op_flags del objeto nditer. Por último, aprenderemos sobre el difusión en matrices NumPy usando el objeto nditer.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de operaciones no puede automatizarse debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.

Crear un ndarray e iterar sobre él usando numpy.nditer

En este paso, crearemos una matriz unidimensional de NumPy usando el método arange(), y luego iteraremos sobre ella usando el objeto numpy.nditer.

import numpy as np

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

print ("La matriz original es:")
print (a)
print ('\n')

## Mostrando los elementos de la matriz uno por uno
print ("La matriz modificada es:")
for x in np.nditer(a):
    print(x)

Iterar sobre la traspuesta de una matriz

En este paso, tomaremos una matriz bidimensional de NumPy, encontraremos su traspuesta e iteraremos sobre ella usando el objeto nditer.

import numpy as np

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

print("La traspuesta de la matriz es :")
at = a.T
print(at)

print("Iterando sobre la matriz:")
for x in np.nditer(at):
    print(x, end=' ')

Iterar sobre una matriz en orden estilo C y en orden estilo F

En este paso, crearemos una matriz bidimensional de NumPy, encontraremos su traspuesta y luego iteraremos sobre ella en orden C y en orden F usando el objeto nditer.

import numpy as np

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

print("\nImprimiendo la traspuesta de la matriz:\n")
at = a.T
print(at)

print("\nIterando sobre la matriz traspuesta en orden F:\n")
for x in np.nditer(at, order='F'):
    print(x, end=' ')

print("\nIterando sobre la matriz traspuesta en orden C:\n")
for x in np.nditer(at, order='C'):
    print(x, end=' ')

Iterar sobre múltiples arrays usando difusión

En este paso, crearemos dos matrices NumPy de diferentes dimensiones e iteraremos sobre ellas usando difusión con el objeto nditer.

import numpy as np

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

print ('La primera matriz :')
print (a)
print ('\n')

print ('La segunda matriz es')
b = np.array([1, 2, 3, 4], dtype = int)
print (b)
print ('\n' )

print ('La matriz modificada es')
for x,y in np.nditer([a,b]):
    print ("%d:%d" %(x,y))

Modificar los valores de una matriz usando op_flags

En este paso, crearemos una matriz unidimensional de NumPy, iteraremos sobre ella usando el objeto nditer mientras establecemos el parámetro op_flags en 'lectura-escritura' y luego modificaremos los elementos de la matriz a medida que iteramos sobre ellos.

import numpy as np

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

print ('La matriz original es:')
print (a)
print ('\n')

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

print ('La matriz modificada es:')
print (a)

Resumen

En este laboratorio, aprendimos cómo usar el objeto nditer en NumPy para iterar sobre matrices y cómo modificar los elementos de una matriz durante la iteración usando el parámetro op_flags. También aprendimos sobre la difusión en matrices NumPy usando el objeto nditer para iterar sobre múltiples matrices de forma concurrente.