Moduł numpy Pythona zapewnia siatka() funkcja tworzenia siatki prostokątnej za pomocą podanych tablic 1-D, które reprezentują Indeksowanie macierzy Lub Indeksowanie kartezjańskie . MATLAB w pewnym stopniu inspiruje funkcję meshgrid(). Z wektorów współrzędnych funkcja meshgrid() zwraca macierze współrzędnych.
Na powyższym rysunku oś x ma wartość od -5 do 5, a oś y mieści się w przedziale od -5 do 5. Zatem na rysunku zaznaczono w sumie 121 punktów, każdy ze współrzędną x i współrzędna y. Dla dowolnej linii równoległej do osi x współrzędne x zaznaczonych punktów wynoszą odpowiednio -5, -4, -3, -2, -1, 0, 1, 2, 3, 4 i 5. Z drugiej strony dla dowolnej linii równoległej do osi y współrzędne y zaznaczonych punktów od dołu do góry wynoszą -5, -4, -3, -2, -1, 0, 1, 2, 3 odpowiednio , 4 i 5.
Składnia
numpy.meshgrid(*xi, **kwargs)
Parametry
x1, x2,…, xn : tablica_podobna
Ten parametr definiuje tablicę 1-wymiarową, która reprezentuje współrzędne siatki.
indeksowanie: {'xy', 'ij'} (opcjonalnie)
Jest to opcjonalny argument, który definiuje kartezjańskie indeksowanie „xy” (domyślnie) lub macierzowe („ij”).
rzadki: bool (opcjonalnie)
Ten parametr jest również opcjonalny. Jeśli potrzebujemy rzadkiej siatki w celu oszczędzania pamięci, musimy ustawić ten parametr na True. Domyślnie jest ustawiona na Fałsz.
skopiuj: bool (opcjonalnie)
Celem tego opcjonalnego argumentu jest zwrócenie kopii oryginalnej tablicy w celu oszczędzania pamięci. Domyślnie jest ustawiona na Fałsz.
Jeśli oba rzadki I Kopiuj parametry są ustawione na False, wówczas zwróci nieciągłe tablice. Ponadto więcej niż jeden element tablicy rozgłoszeniowej może odnosić się do pojedynczej lokalizacji pamięci. Jeśli musimy pisać do tablic, musimy najpierw wykonać kopie.
Zwroty
X1, X2, ..., Xn
Funkcja ta zwraca długość współrzędnych z wektora współrzędnych.
np zera
Przykład 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
Wyjście:
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. ]])
W powyższym kodzie
- Zaimportowaliśmy numpy z aliasem np.
- Stworzyliśmy dwie zmienne, tj. na i nb, i przypisaliśmy im odpowiednio wartości 5 i 3.
- Stworzyliśmy dwie tablice, tj. a i b, używając funkcji linspace().
- Następnie zadeklarowaliśmy zmienne „xa” i „xb” i przypisaliśmy zwróconą wartość siatka()
- W funkcji przekazaliśmy obie tablice „a” i „b”.
- Na koniec próbowaliśmy wydrukować wartość 'szach w persji' I „xb” .
W wyniku pokazane zostały dwie tablice zawierające długość współrzędnych z wektorów współrzędnych.
Przykład 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
Wyjście:
array([[1. , 1.25, 1.5 , 1.75, 2. ]]) array([[1. ], [1.5], [2. ]])
Przykład 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()
Wyjście:
W powyższym kodzie
- Zaimportowaliśmy numpy z aliasem np.
- Zaimportowaliśmy matplotlib.pyplot jako plt.
- Stworzyliśmy dwie tablice, tj. a i b, korzystając z funkcji np.arange().
- Następnie zadeklarowaliśmy zmienne „xa” i „xb” i przypisaliśmy zwróconą wartość siatka()
- W funkcji przekazaliśmy obie tablice „a” i „b”.
- Następnie zadeklarowaliśmy zmienną z i przypisaliśmy wartość zwracaną przez funkcję np.sine().
- Na koniec próbowaliśmy narysować linie konturowe i wypełnione kontury za pomocą plt.contourf()
Na wyjściu wykreślono linie konturowe.
Przykład 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()
Wyjście:
Przykład 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()
Wyjście: