Korzystanie z Meshgrid Numpy

Korzystanie z Meshgrid Numpy
Ten post pokaże, czym jest Meshgrid i jak można go utworzyć i użyć w Python.

Meshgrid jest prostokątną siatką wartości wykonanych z wektorów współrzędnych. Jest również to, że wartości w sile -wektory są funkcją wektorów współrzędnych.
Załóżmy, że chcesz utworzyć meshgrid z wektorów współrzędnych x i y. Naiwnym sposobem na to jest utworzenie nowej prostokątnej siatki i przypisanie wartości siatki poprzez ocenę funkcji w każdym punkcie Meshgrid. Poniższy kod ilustruje naiwny sposób:

Meshgrid naiwny sposób:

x = [0, 1, 2, 3, 4, 5]
y = [0, 1, 2, 3, 4, 5]
Z = [[0 dla J w zakresie (len (y))] dla i w zakresie (x)]
Dla i w zakresie (len (x)):
dla J w zakresie (len (y)):
Z [i, j] = func (x [i], y [i])

Wadą tego podejścia jest to, że jest ono żmudne, a obsługa dużych wektorów współrzędnych zajmuje więcej czasu. Python Library Numpy for Scientific Computing pomaga w bardziej wydajnym tworzeniu MESHGRID. Do tworzenia MESHGRID będziemy używać funkcji Numpy.Meshgrid. Oto to samo rozwiązanie za pomocą Numpy.

$ Python3
Python 3.8.5 (domyślnie, 8 marca 2021, 13:02:45)
[GCC 9.3.0] na Linux2
Wpisz „Pomoc”, „Copyright”, „Kredyty” lub „Licencja”, aby uzyskać więcej informacji.
>>> Importuj Numpy jako NP
>>> x = np.Linspace (0, 6, 3)
>>> x
tablica ([0., 3., 6.])
>>> y = np.Linspace (1, 7, 3)
>>> y
tablica ([1., 4., 7.])
>>> xx, yy = np.Meshgrid (x, y)
>>> xx
tablica ([[0., 3., 6.],
[0., 3., 6.],
[0., 3., 6.]])
>>> xx.kształt
(3, 3)

Wektorowe operacje Numpy sprawiają, że jest szybciej niż pętle Python. Wektoryzacje pomagają w delegowaniu operacji zapętlania do wysoce zoptymalizowanego kodu C i zwiększenie go szybciej. Wyraża także operacje na całej tablicy, a nie na poszczególnych elementach tablic.

Ocena funkcji przez Meshgrid jest bardzo łatwa. Wszystko, co musimy zrobić, to po prostu wywołać funkcję. Wykreślimy również ocenianą funkcję tutaj, tworząc wykres konturu za pomocą matplotlib. Kontynuowanie poprzedniego przykładu,

>>> z = np.sin (xx ** 2 + yy ** 2)
>>> Importuj matplotlib.Pyplot as Plt
>>> plt.Rysunek (rysunek = (10, 6))
>>> plt.contourf (xx, yy, z)
>>> plt.colorbar ()
>>> plt.pokazywać()

Jeśli tablica X i Y są zbyt duże, tablica XX i YY może zająć dużo miejsca. Można to zoptymalizować za pomocą opcji rzadkich = true.

>>> x = np.Linspace (0, 5, 6)
>>> y = np.Linspace (0, 5, 6)
>>> xx, yy = np.MeshGrid (x, y, rzadki = false) #default
>>> xx
tablica ([[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.kształt
(6, 6)
>>> xx, yy = np.MeshGrid (x, y, rzadki = true) #default
>>> xx
tablica ([[0., 1., 2., 3., 4., 5.]])
>>> xx.kształt
(1, 6)