logo

numpy.meshgrid() u Pythonu

Python modul numpy pruža mrežasta mreža() funkcija za stvaranje pravokutne mreže uz pomoć danih 1-D nizova koji predstavljaju Indeksiranje matrice ili Kartezijansko indeksiranje . MATLAB donekle inspirira funkciju meshgrid(). Iz koordinatnih vektora funkcija meshgrid() vraća koordinatne matrice.

numpy.meshgrid()

Na gornjoj slici, x-os je u rasponu od -5 do 5, a y-os je u rasponu od -5 do 5. Dakle, na slici je označena ukupno 121 točka, svaka s x-koordinatom i y-koordinata. Za bilo koju liniju paralelnu s x-osi, x-koordinate označenih točaka su -5, -4, -3, -2, -1, 0, 1, 2, 3, 4 i 5 redom. S druge strane, za bilo koju liniju paralelnu s y-osi, y-koordinate označenih točaka odozdo prema gore su -5, -4, -3, -2, -1, 0, 1, 2, 3 , 4, odnosno 5.

Sintaksa

 numpy.meshgrid(*xi, **kwargs) 

Parametri

x1, x2,…, xn : sličan_nizu

Ovaj parametar definira 1-dimenzionalni niz koji predstavlja koordinate mreže.

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

Ovo je izborni argument koji definira kartezijansko 'xy' (prema zadanim postavkama) ili matrično ('ij') indeksiranje izlaza.

rijedak: bool (izborno)

Ovaj parametar također nije obavezan. Ako nam je potrebna rijetka mreža za očuvanje memorije, ovaj parametar moramo postaviti na True. Prema zadanim postavkama postavljeno je na False.

kopija: bool (neobavezno)

Cilj ovog izbornog argumenta je vraćanje kopije izvornog niza radi očuvanja memorije. Prema zadanim postavkama postavljeno je na False.

Ako oboje oskudan i kopirati parametri su postavljeni na False, tada će vratiti nesusjedne nizove. Nadalje, više od jednog elementa niza emitiranja može se odnositi na jednu memorijsku lokaciju. Ako trebamo pisati u nizove, onda prvo moramo napraviti kopije.

Povratak

X1, X2, ..., Xn

Ova funkcija vraća koordinatnu duljinu iz koordinatnog vektora.

Primjer 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 

Izlaz:

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

U gornjem kodu

  • Uvezli smo numpy s alias imenom np.
  • Stvorili smo dvije varijable, tj. na i nb, i dodijelili im vrijednosti 5 i 3.
  • Stvorili smo dva niza, tj. a i b pomoću funkcije linspace().
  • Nakon toga smo deklarirali varijable 'xa' i 'xb' i dodijelili vraćenu vrijednost od mrežasta mreža()
  • Proslijedili smo oba niza 'a' i 'b' u funkciji
  • Na kraju, pokušali smo ispisati vrijednost 'šah' i 'xb' .

U izlazu su prikazana dva polja koja sadrže koordinatne duljine iz koordinatnih vektora.

Primjer 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 

Izlaz:

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

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

Izlaz:

numpy.meshgrid()

U gornjem kodu

  • Uvezli smo numpy s alias imenom np.
  • Uvezli smo matplotlib.pyplot kao plt.
  • Stvorili smo dva niza, tj. a i b pomoću funkcije np.arange().
  • Nakon toga smo deklarirali varijable 'xa' i 'xb' i dodijelili vraćenu vrijednost od mrežasta mreža()
  • Proslijedili smo oba niza 'a' i 'b' u funkciji.
  • Nakon toga smo deklarirali varijablu z i dodijelili povratnu vrijednost funkcije np.sine().
  • Na kraju, pokušali smo nacrtati konturne linije i ispunjene konture pomoću plt.contourf()

U izlazu su iscrtane konturne linije.

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

Izlaz:

numpy.meshgrid()

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

Izlaz:

numpy.meshgrid()