Usando Meshgrid de Numpy

Usando Meshgrid de Numpy
Esta publicación mostrará qué es un Meshgrid y cómo se puede crear y usar en Python.

Un MeshGrid es una cuadrícula rectangular de valores hechos de vectores coordinados. También es que los valores en el MeshGrid son una función de los vectores de coordenadas.
Digamos que quieres crear un malgrid de los vectores de coordenadas x e y. La forma ingenua de hacerlo es crear una nueva cuadrícula rectangular y asignar los valores de la cuadrícula evaluando la función en cada punto de MeshGrid. El siguiente código ilustró la forma ingenua:

Meshgrid ingenua forma:

x = [0, 1, 2, 3, 4, 5]
y = [0, 1, 2, 3, 4, 5]
z = [[0 para j en rango (len (y))] para i en el rango (x)]
para i en el rango (len (x)):
para j en rango (len (y)):
z [i, j] = func (x [i], y [i])

Los inconvenientes de este enfoque son que es tedioso, y el manejo de vectores de coordenadas grandes lleva más tiempo. La biblioteca de Python Numpy para la informática científica ayuda a crear un malgrid de manera más eficiente. Para crear un MeshGrid, utilizaremos la función numpy.malla. Aquí está la misma solución usando numpy.

$ python3
Python 3.8.5 (predeterminado, 8 de marzo 2021, 13:02:45)
[GCC 9.3.0] en Linux2
Escriba "Ayuda", "Copyright", "Créditos" o "Licencia" para obtener más información.
>>> importar numpy como np
>>> x = np.Linspace (0, 6, 3)
>>> x
matriz ([0., 3., 6.])
>>> y = np.Linspace (1, 7, 3)
>>> Y
matriz ([1., 4., 7.])
>>> xx, yy = np.Meshgrid (x, y)
>>> xx
Array ([[0., 3., 6.],
[0., 3., 6.],
[0., 3., 6.]])
>>> xx.forma
(3, 3)

Las operaciones vectorizadas de Numpy lo hacen más rápido que Python Loops. La ayuda de vectorizaciones delegando la operación de bucle a un código C altamente optimizado internamente y haciéndolo más rápido. También expresa operaciones en las matrices completas en lugar de los elementos individuales de las matrices.

Evaluar una función sobre el malgrid es muy fácil. Todo lo que necesitamos hacer es llamar a la función. También trazaremos la función evaluada aquí haciendo una gráfica de contorno usando mate. Continuando con el ejemplo anterior,

>>> z = np.sin (xx ** 2 + yy ** 2)
>>> Importar matplotlib.Pyplot como PLT
>>> PLT.Figura (Figsize = (10, 6))
>>> PLT.Contourf (xx, yy, z)
>>> PLT.barra de color()
>>> PLT.espectáculo()

Si la matriz x e y son demasiado grandes, entonces la matriz xx y yy podrían llevar mucho espacio. Esto se puede optimizar utilizando la opción SPARSE = True.

>>> x = np.Linspace (0, 5, 6)
>>> y = np.Linspace (0, 5, 6)
>>> xx, yy = np.Meshgrid (x, y, escaso = falso) #default
>>> xx
Array ([[0., 1., 2., 3., 4., 5.],
[0., 1., 2., 3., 4., 5.],
[0., 1., 2., 3., 4., 5.],
[0., 1., 2., 3., 4., 5.],
[0., 1., 2., 3., 4., 5.],
[0., 1., 2., 3., 4., 5.]])
>>> xx.forma
(6, 6)
>>> xx, yy = np.Meshgrid (x, y, escaso = true) #default
>>> xx
Array ([[0., 1., 2., 3., 4., 5.]])
>>> xx.forma
(dieciséis)