O módulo numpy do Python fornece grade de malha() função para criar uma grade retangular com a ajuda das matrizes 1-D fornecidas que representam o Indexação matricial ou Indexação cartesiana . O MATLAB inspira um pouco a função meshgrid(). A partir dos vetores de coordenadas, a função meshgrid() retorna as matrizes de coordenadas.
Na figura acima, o eixo x varia de -5 a 5, e o eixo y varia de -5 a 5. Portanto, há um total de 121 pontos marcados na figura, cada um com coordenada x e coordenada y. Para qualquer linha paralela ao eixo x, as coordenadas x dos pontos marcados são -5, -4, -3, -2, -1, 0, 1, 2, 3, 4 e 5 respectivamente. Por outro lado, para qualquer linha paralela ao eixo y, as coordenadas y dos pontos marcados de baixo para cima são -5, -4, -3, -2, -1, 0, 1, 2, 3 , 4 e 5 respectivamente.
Sintaxe
numpy.meshgrid(*xi, **kwargs)
Parâmetros
x1, x2,…, xn: semelhante a array
Este parâmetro define o array unidimensional, que representa as coordenadas de uma grade.
indexação: {'xy', 'ij'}(opcional)
Este é um argumento opcional que define a indexação cartesiana 'xy' (por padrão) ou matricial ('ij') da saída.
esparso: bool (opcional)
Este parâmetro também é opcional. Se precisarmos de uma grade esparsa para conservar memória, teremos que definir este parâmetro como True. Por padrão, está definido como Falso.
copiar: bool (opcional)
O objetivo deste argumento opcional é retornar uma cópia do array original para conservar memória. Por padrão, está definido como Falso.
Se ambos escasso e cópia de Se os parâmetros forem definidos como False, ele retornará matrizes não contíguas. Além disso, mais de um elemento de uma matriz de transmissão pode referir-se a um único local de memória. Se precisarmos escrever nos arrays, primeiro teremos que fazer cópias.
Devoluções
X1, X2, ..., Xn
O comprimento da coordenada do vetor de coordenadas é retornado desta função.
Exemplo 1:
import numpy as np na, nb = (5, 3) a = np.linspace(1, 2, na) b = np.linspace(1, 2, nb) xa, xb = np.meshgrid(a, b) xa xb
Saída:
array([[1. , 1.25, 1.5 , 1.75, 2. ], [1. , 1.25, 1.5 , 1.75, 2. ], [1. , 1.25, 1.5 , 1.75, 2. ]]) array([[1. , 1. , 1. , 1. , 1. ], [1.5, 1.5, 1.5, 1.5, 1.5], [2. , 2. , 2. , 2. , 2. ]])
No código acima
- Importamos numpy com o nome alternativo np.
- Criamos duas variáveis, ou seja, na e nb, e atribuímos os valores 5 e 3, respectivamente.
- Criamos dois arrays, ou seja, aeb usando a função linspace().
- Depois disso, declaramos as variáveis 'xa' e 'xb' e atribuímos o valor retornado de grade de malha()
- Passamos os arrays 'a' e 'b' na função
- Por último, tentamos imprimir o valor de 'xa' e 'xb' .
Na saída, foram mostradas duas matrizes que contêm o comprimento das coordenadas dos vetores de coordenadas.
Exemplo 2:
import numpy as np na, nb = (5, 3) a = np.linspace(1, 2, na) b = np.linspace(1, 2, nb) xa, xb = np.meshgrid(a, b, sparse=True) xa xb
Saída:
array([[1. , 1.25, 1.5 , 1.75, 2. ]]) array([[1. ], [1.5], [2. ]])
Exemplo 3:
import numpy as np import matplotlib.pyplot as plt a = np.arange(-10, 10, 0.1) b = np.arange(-10, 10, 0.1) xa, xb = np.meshgrid(a, b, sparse=True) z = np.sin(xa**2 + xb**2) / (xa**2 + xb**2) h = plt.contourf(a,b,z) plt.show()
Saída:
No código acima
- Importamos numpy com o nome alternativo np.
- Importamos matplotlib.pyplot como plt.
- Criamos dois arrays, ou seja, aeb usando a função np.arange().
- Depois disso, declaramos as variáveis 'xa' e 'xb' e atribuímos o valor retornado de grade de malha()
- Passamos os arrays 'a' e 'b' na função.
- Depois disso, declaramos uma variável z e atribuímos o valor de retorno da função np.sine().
- Por último, tentamos desenhar linhas de contorno e contornos preenchidos usando o plt.contourf()
Na saída, as linhas de contorno foram plotadas.
Exemplo 4:
import numpy as np import matplotlib.pyplot as plt a = np.linspace(-5, 5, 5) b = np.linspace(-5, 5, 11) random_data = np.random.random((11, 5)) xa, xb = np.meshgrid(a, b) plt.contourf(xa, xb, random_data, cmap = 'jet') plt.colorbar() plt.show()
Saída:
Exemplo 5:
import numpy as np import matplotlib.pyplot as plt a = np.linspace(-5, 5, 5) b = np.linspace(-5, 5, 11) random_data = np.random.random((11, 5)) xa, xb = np.meshgrid(a, b) sine = (np.sin(xa**2 + xb**2))/(xa**2 + xb**2) plt.contourf(xa, xb, sine, cmap = 'jet') plt.colorbar() plt.show()
Saída: