logo

numpy.meshgrid() v Pythonu

Pythonov modul numpy zagotavlja meshgrid() funkcijo za ustvarjanje pravokotne mreže s pomočjo danih 1-D nizov, ki predstavljajo Matrično indeksiranje oz Kartezijsko indeksiranje . MATLAB nekoliko navdihuje funkcijo meshgrid(). Iz koordinatnih vektorjev funkcija meshgrid() vrne koordinatne matrike.

numpy.meshgrid()

Na zgornji sliki je os x v razponu od -5 do 5, os y pa v razponu od -5 do 5. Torej je na sliki skupno označenih 121 točk, vsaka s koordinato x in y-koordinata. Za katero koli premico, ki je vzporedna z osjo x, so koordinate x označenih točk -5, -4, -3, -2, -1, 0, 1, 2, 3, 4 oziroma 5. Po drugi strani pa so za katero koli premico, ki je vzporedna z osjo y, koordinate y označenih točk od spodaj navzgor -5, -4, -3, -2, -1, 0, 1, 2, 3 , 4 oziroma 5.

Sintaksa

 numpy.meshgrid(*xi, **kwargs) 

Parametri

x1, x2,…, xn : podoben_matriki

Ta parameter določa 1-dimenzionalni niz, ki predstavlja koordinate mreže.

indeksiranje: {'xy', 'ij'}(izbirno)

To je izbirni argument, ki definira kartezijsko 'xy' (privzeto) ali matrično ('ij') indeksiranje izhoda.

redko: bool (neobvezno)

Ta parameter je tudi neobvezen. Če potrebujemo redko mrežo za ohranjanje pomnilnika, moramo ta parameter nastaviti na True. Privzeto je nastavljen na False.

kopija: bool (neobvezno)

Namen tega neobveznega argumenta je, da vrne kopijo izvirne matrike za ohranjanje pomnilnika. Privzeto je nastavljen na False.

Če oboje redek in kopirati so parametri nastavljeni na False, potem bo vrnil nesosednje nize. Poleg tega se lahko več kot en element oddajnega polja nanaša na eno pomnilniško lokacijo. Če moramo pisati v polja, moramo najprej narediti kopije.

Vračila

X1, X2, ..., Xn

Ta funkcija vrne koordinatno dolžino iz koordinatnega vektorja.

Primer 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 

Izhod:

 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. ]]) 

V zgornji kodi

  • Uvozili smo numpy z vzdevkom np.
  • Ustvarili smo dve spremenljivki, to sta na in nb, in jima dodelili vrednosti 5 oziroma 3.
  • S funkcijo linspace() smo ustvarili dve matriki, tj. a in b.
  • Po tem smo deklarirali spremenljivki 'xa' in 'xb' in dodelili vrnjeno vrednost meshgrid()
  • V funkciji smo posredovali obe matriki 'a' in 'b'
  • Nazadnje smo poskušali natisniti vrednost 'shah' in 'xb' .

V izhodu sta bili prikazani dve matriki, ki vsebujeta koordinatno dolžino iz koordinatnih vektorjev.

Primer 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 

Izhod:

 array([[1. , 1.25, 1.5 , 1.75, 2. ]]) array([[1. ], [1.5], [2. ]]) 

Primer 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() 

Izhod:

numpy.meshgrid()

V zgornji kodi

  • Uvozili smo numpy z vzdevkom np.
  • Matplotlib.pyplot smo uvozili kot plt.
  • S funkcijo np.arange() smo ustvarili dve matriki, tj. a in b.
  • Po tem smo deklarirali spremenljivki 'xa' in 'xb' in dodelili vrnjeno vrednost meshgrid()
  • V funkciji smo posredovali obe matriki 'a' in 'b'.
  • Po tem smo deklarirali spremenljivko z in dodelili vrnjeno vrednost funkcije np.sine().
  • Nazadnje smo poskusili narisati konturne črte in zapolnjene konture z uporabo plt.contourf()

V izhodu so bile narisane konturne črte.

Primer 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() 

Izhod:

numpy.meshgrid()

Primer 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() 

Izhod:

numpy.meshgrid()