logo

numpy.meshgrid() v Pythone

Numpy modul Pythonu poskytuje sieťová mriežka () funkcia na vytvorenie pravouhlej siete pomocou daných 1-D polí, ktoré reprezentujú Maticové indexovanie alebo Kartézske indexovanie . MATLAB do istej miery inšpiruje funkciu meshgrid(). Zo súradnicových vektorov funkcia meshgrid() vracia súradnicové matice.

numpy.meshgrid()

Na obrázku vyššie je os x v rozsahu od -5 do 5 a os y je v rozsahu od -5 do 5. Celkovo je teda na obrázku označených 121 bodov, každý so súradnicou x a y-ová súradnica. Pre akúkoľvek priamku rovnobežnú s osou x sú súradnice x označených bodov -5, -4, -3, -2, -1, 0, 1, 2, 3, 4 a 5 v tomto poradí. Na druhej strane, pre akúkoľvek priamku rovnobežnú s osou y sú súradnice y označených bodov zdola nahor -5, -4, -3, -2, -1, 0, 1, 2, 3 , 4 a 5 v tomto poradí.

Syntax

 numpy.meshgrid(*xi, **kwargs) 

Parametre

x1, x2,…, xn : pole_like

Tento parameter definuje 1-rozmerné pole, ktoré predstavuje súradnice mriežky.

indexovanie: {'xy', 'ij'} (voliteľné)

Toto je voliteľný argument, ktorý definuje karteziánske 'xy' (štandardne) alebo maticové ('ij') indexovanie výstupu.

riedky: bool (voliteľné)

Tento parameter je tiež voliteľný. Ak potrebujeme riedku mriežku kvôli šetreniu pamäte, musíme tento parameter nastaviť na True. V predvolenom nastavení je nastavená na hodnotu False.

kopírovať: bool (voliteľné)

Cieľom tohto voliteľného argumentu je, že vráti kópiu pôvodného poľa na šetrenie pamäte. V predvolenom nastavení je nastavená na hodnotu False.

Ak oboje riedke a kopírovať parametre sú nastavené na False, potom vráti nesúvislé polia. Okrem toho viac ako jeden prvok vysielacieho poľa môže odkazovať na jedno pamäťové miesto. Ak potrebujeme zapisovať do polí, musíme najskôr vytvoriť kópie.

Návraty

X1, X2, ..., Xn

Táto funkcia vráti súradnicovú dĺžku zo súradnicového vektora.

Príklad 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 

Výkon:

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

Vo vyššie uvedenom kóde

  • Importovali sme numpy s aliasom np.
  • Vytvorili sme dve premenné, t.j. na a nb, a priradili sme im hodnoty 5 a 3.
  • Vytvorili sme dve polia, t.j. a a b pomocou funkcie linspace().
  • Potom sme deklarovali premenné 'xa' a 'xb' a priradili vrátenú hodnotu sieťová mriežka ()
  • Vo funkcii sme odovzdali obe polia 'a' a 'b'
  • Nakoniec sme sa pokúsili vytlačiť hodnotu 'shah' a 'xb' .

Vo výstupe sú zobrazené dve polia, ktoré obsahujú dĺžku súradníc zo súradnicových vektorov.

Príklad 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 

Výkon:

chrome adresný riadok
 array([[1. , 1.25, 1.5 , 1.75, 2. ]]) array([[1. ], [1.5], [2. ]]) 

Príklad 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() 

Výkon:

numpy.meshgrid()

Vo vyššie uvedenom kóde

  • Importovali sme numpy s aliasom np.
  • Importovali sme matplotlib.pyplot ako plt.
  • Vytvorili sme dve polia, t.j. a a b pomocou funkcie np.arange().
  • Potom sme deklarovali premenné 'xa' a 'xb' a priradili vrátenú hodnotu sieťová mriežka ()
  • Vo funkcii sme odovzdali obe polia 'a' a 'b'.
  • Potom sme deklarovali premennú z a priradili návratovú hodnotu funkcie np.sine().
  • Nakoniec sme sa pokúsili nakresliť obrysové čiary a vyplnené obrysy pomocou plt.contourf()

Vo výstupe boli vykreslené obrysové čiary.

Príklad 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() 

Výkon:

numpy.meshgrid()

Príklad 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() 

Výkon:

numpy.meshgrid()