Verwenden Sie Numpys Meshgrid

Verwenden Sie Numpys Meshgrid
Dieser Beitrag zeigt, was ein Meshgrid ist und wie er in Python erstellt und verwendet werden kann.

Ein Meshgrid ist ein rechteckiges Gitter von Werten aus Koordinatenvektoren. Es ist auch so, dass die Werte in der Meshgrid eine Funktion der Koordinatenvektoren sind.
Angenommen, Sie möchten ein Meshgrid aus den Koordinatenvektoren X und Y erstellen. Die naive Art, dies zu tun, besteht darin. Der folgende Code illustrierte den naiven Weg:

Meshgrid naiver Weg:

x = [0, 1, 2, 3, 4, 5]
y = [0, 1, 2, 3, 4, 5]
z = [0 für j im Bereich (len (y)) für i in Bereich (x)]
für i in Reichweite (Len (x)):
für j in Reichweite (Len (y)):
z [i, j] = func (x [i], y [i])

Die Nachteile dieses Ansatzes sind, dass er langweilig ist und der Umgang mit großen Koordinatenvektoren mehr Zeit in Anspruch zu. Die Python Library Numpy for Scientific Computing hilft bei der Erstellung eines Meshgrids effizienter. Zum Erstellen eines Meshgrids werden wir die Funktion verwenden Numpy.Meshgrid. Hier ist die gleiche Lösung mit Numpy.

$ python3
Python 3.8.5 (Standard, 8. März 2021, 13:02:45)
[GCC 9.3.0] auf Linux2
Geben Sie "Hilfe", "Copyright", "Credits" oder "Lizenz" für weitere Informationen ein.
>>> Numph als NP importieren
>>> x = np.Linspace (0, 6, 3)
>>> x
Array ([0)., 3., 6.]))
>>> y = np.Linspace (1, 7, 3)
>>> y
Array ([1., 4., 7.]))
>>> xx, yy = np.Meshgrid (x, y)
>>> xx
Array ([[0)., 3., 6.],
[0., 3., 6.],
[0., 3., 6.]]))
>>> xx.Form
(3, 3)

Numpys vektorisierte Operationen machen es schneller als Python Loops. Die Vektorisierungen helfen, indem der Schleifenbetrieb an hoch optimierte C -Code intern delegiert und schneller wird. Es drückt auch Operationen auf den gesamten Arrays und nicht in den einzelnen Elementen der Arrays aus.

Die Bewertung einer Funktion über dem Meshgrid ist sehr einfach. Alles, was wir tun müssen, ist einfach die Funktion aufzurufen. Wir werden auch die bewertete Funktion hier darstellen, indem wir ein Konturdiagramm verwenden Matplotlib. Fortsetzung des vorherigen Beispiels,

>>> z = np.Sünde (xx ** 2 + yy ** 2)
>>> Matplotlib importieren.Pyplot als PLT
>>> PLT.Abbildung (AbbSize = (10, 6))
>>> PLT.Contourf (xx, yy, z)
>>> PLT.Farbbalken()
>>> PLT.zeigen()

Wenn das Array X und Y zu groß sind, können das Array XX und YY viel Platz benötigen. Dies kann mithilfe der Option spärlich = true optimiert werden.

>>> x = np.Linspace (0, 5, 6)
>>> y = np.Linspace (0, 5, 6)
>>> xx, yy = np.meshgrid (x, y, sparse = false) #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.Form
(6, 6)
>>> xx, yy = np.meshgrid (x, y, sparse = true) #Default
>>> xx
Array ([[0)., 1., 2., 3., 4., 5.]]))
>>> xx.Form
(1, 6)