logo

numpy.meshgrid() Python

Neskaidrs Python modulis nodrošina meshgrid () funkcija taisnstūra režģa izveidošanai, izmantojot dotos 1-D masīvus, kas attēlo Matricas indeksācija vai Dekarta indeksācija . MATLAB nedaudz iedvesmo funkciju meshgrid (). No koordinātu vektoriem funkcija meshgrid() atgriež koordinātu matricas.

numpy.meshgrid()

Iepriekš redzamajā attēlā x ass ir robežās no -5 līdz 5, bet y ass ir robežās no -5 līdz 5. Tātad attēlā kopā ir atzīmēts 121 punkts, katrs ar x koordinātu un y-koordināta. Jebkurai taisnei, kas ir paralēla x asij, atzīmēto punktu x koordinātas ir attiecīgi -5, -4, -3, -2, -1, 0, 1, 2, 3, 4 un 5. No otras puses, jebkurai taisnei, kas ir paralēla y asij, marķēto punktu y koordinātas no apakšas uz augšu ir -5, -4, -3, -2, -1, 0, 1, 2, 3 , 4 un 5 attiecīgi.

Sintakse

 numpy.meshgrid(*xi, **kwargs) 

Parametri

x1, x2,…, xn: masīva_līdzīgs

Šis parametrs definē 1-dimensiju masīvu, kas attēlo režģa koordinātas.

indeksēšana: {'xy', 'ij'} (neobligāti)

Šis ir neobligāts arguments, kas definē izvades Dekarta 'xy' (pēc noklusējuma) vai matricas ('ij') indeksēšanu.

reti: bool (pēc izvēles)

Šis parametrs arī nav obligāts. Ja atmiņas taupīšanai ir nepieciešams rets režģis, šis parametrs ir jāiestata uz True. Pēc noklusējuma tas ir iestatīts uz False.

kopija: bool (neobligāti)

Šī izvēles argumenta mērķis ir atdot sākotnējā masīva kopiju atmiņas saglabāšanai. Pēc noklusējuma tas ir iestatīts uz False.

Ja abi reti un kopiju parametri ir iestatīti uz False, tad tiks atgriezti masīvi, kas nav blakus. Turklāt vairāk nekā viens apraides masīva elements var attiekties uz vienu atmiņas vietu. Ja mums ir nepieciešams rakstīt masīvos, vispirms mums ir jāizveido kopijas.

Atgriežas

X1, X2, ..., Xn

No šīs funkcijas tiek atgriezts koordinātu garums no koordinātu vektora.

1. piemērs:

 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 

Izvade:

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

Iepriekš minētajā kodā

  • Mēs esam importējuši numpy ar aizstājvārdu np.
  • Mēs esam izveidojuši divus mainīgos, t.i., na un nb, un piešķīruši vērtības attiecīgi 5 un 3.
  • Mēs esam izveidojuši divus masīvus, t.i., a un b, izmantojot linspace() funkciju.
  • Pēc tam esam deklarējuši mainīgos 'xa' un 'xb' un piešķīruši atgriezto vērtību meshgrid ()
  • Funkcijā esam izturējuši gan masīvus “a”, gan “b”.
  • Visbeidzot, mēs mēģinājām izdrukāt vērtību 'sha' un 'xb' .

Izvadā ir parādīti divi masīvi, kas satur koordinātu garumu no koordinātu vektoriem.

2. piemērs:

 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 

Izvade:

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

3. piemērs:

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

Izvade:

numpy.meshgrid()

Iepriekš minētajā kodā

  • Mēs esam importējuši numpy ar aizstājvārdu np.
  • Mēs esam importējuši matplotlib.pyplot kā plt.
  • Mēs esam izveidojuši divus masīvus, t.i., a un b, izmantojot funkciju np.arange().
  • Pēc tam esam deklarējuši mainīgos 'xa' un 'xb' un piešķīruši atgriezto vērtību meshgrid ()
  • Funkcijā esam izturējuši gan masīvus “a”, gan “b”.
  • Pēc tam esam deklarējuši mainīgo z un piešķīruši funkcijas np.sine() atgriešanās vērtību.
  • Visbeidzot, mēs mēģinājām zīmēt kontūrlīnijas un aizpildīt kontūras, izmantojot plt.contourf()

Izvadā ir uzzīmētas kontūrlīnijas.

4. piemērs:

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

Izvade:

numpy.meshgrid()

5. piemērs:

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

Izvade:

numpy.meshgrid()