Modulul numpy din Python oferă meshgrid() funcție pentru crearea unei grile dreptunghiulare cu ajutorul matricelor 1-D date care reprezintă Indexarea matricei sau Indexarea carteziană . MATLAB inspiră oarecum funcția meshgrid(). Din vectorii de coordonate, funcția meshgrid() returnează matricele de coordonate.
În figura de mai sus, axa x variază de la -5 la 5, iar axa y variază de la -5 la 5. Deci, există un total de 121 de puncte marcate în figură, fiecare cu coordonatele x și coordonata y. Pentru orice linie paralelă cu axa x, coordonatele x ale punctelor marcate sunt -5, -4, -3, -2, -1, 0, 1, 2, 3, 4 și, respectiv, 5. Pe de altă parte, pentru orice linie paralelă cu axa y, coordonatele y ale punctelor marcate de jos în sus sunt -5, -4, -3, -2, -1, 0, 1, 2, 3 , 4 și, respectiv, 5.
comanda Linux Run
Sintaxă
numpy.meshgrid(*xi, **kwargs)
Parametrii
x1, x2,…, xn : array_like
Acest parametru definește matricea unidimensională, care reprezintă coordonatele unei grile.
indexare: {'xy', 'ij'} (opţional)
Acesta este un argument opțional care definește indexarea carteziană „xy” (în mod implicit) sau matrice („ij”) a ieșirii.
rar: bool (opțional)
Acest parametru este, de asemenea, opțional. Dacă avem nevoie de o grilă rară pentru conservarea memoriei, trebuie să setăm acest parametru la True. În mod implicit, este setat la Fals.
copiere: bool (opțional)
Scopul acestui argument opțional este că returnează o copie a matricei originale pentru conservarea memoriei. În mod implicit, este setat la Fals.
Dacă ambele rar și copie parametrii sunt setați la False, apoi va returna matrice necontigue. În plus, mai mult de un element al unei matrice de difuzare se poate referi la o singură locație de memorie. Dacă trebuie să scriem în matrice, atunci trebuie să facem mai întâi copii.
Se intoarce
X1, X2, ..., Xn
Lungimea coordonatelor din vectorul de coordonate este returnată din această funcție.
Exemplul 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
Ieșire:
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. ]])
În codul de mai sus
- Am importat numpy cu numele de alias np.
- Am creat două variabile, adică na și nb, și am atribuit valorile 5 și, respectiv, 3.
- Am creat două matrice, adică a și b folosind funcția linspace().
- După aceea, am declarat variabilele „xa” și „xb” și am atribuit valoarea returnată a meshgrid()
- Am trecut ambele matrice „a” și „b” în funcție
- În cele din urmă, am încercat să tipărim valoarea lui 'sa' și 'xb' .
În rezultat, au fost arătate două matrice care conțin lungimea coordonatelor din vectorii de coordonate.
Exemplul 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
Ieșire:
array([[1. , 1.25, 1.5 , 1.75, 2. ]]) array([[1. ], [1.5], [2. ]])
Exemplul 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()
Ieșire:
În codul de mai sus
- Am importat numpy cu numele de alias np.
- Am importat matplotlib.pyplot ca plt.
- Am creat două matrice, adică a și b folosind funcția np.arange().
- După aceea, am declarat variabilele „xa” și „xb” și am atribuit valoarea returnată a meshgrid()
- Am trecut ambele matrice „a” și „b” în funcție.
- După aceea, am declarat o variabilă z și am atribuit valoarea de returnare a funcției np.sine().
- În cele din urmă, am încercat să desenăm linii de contur și contururi umplute utilizând plt.contourf()
În ieșire, au fost trasate linii de contur.
Exemplul 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()
Ieșire:
Exemplul 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()
Ieșire: