Funkcia NumPy Apply

Funkcia Numpy Apply



Vstavaná knižnica, ktorú ponúka Python, známa ako NumPy, nám umožňuje konštruovať viacrozmerné polia, upravovať ich a vykonávať na nich rôzne aritmetické výpočty. Funkciu Apply poskytuje aj balík NumPy. Typický prípad použitia funkcie Apply je podobný scenáru, keď chceme rozdeliť pole a vykonať nejaké operácie s každým prvkom zoznamu, napríklad ak chceme oddeliť každú položku v riadku. Samozrejme, v Pythone vieme, že for-loops sú pomalé, takže by sme sa im chceli vyhnúť, ak je to možné. Funkciu „použiť“ možno použiť, ak chcete vykonať rovnakú operáciu na každom riadku alebo stĺpci dátového rámca. Inými slovami, robí to, čo chcete robiť s for-loop bez toho, aby ste museli písať for-loop.

Existujú dva spôsoby použitia ľubovoľnej funkcie na pole v závislosti od podmienky. Môžeme použiť funkciu „použiť cez os“, ktorá je užitočná, keď funkciu aplikujeme na každý prvok poľa jeden po druhom, a je užitočná pre n-rozmerné polia. Druhá metóda je „aplikovať pozdĺž osi“, ktorá sa vzťahuje na jednorozmerné pole.

Syntax:

Metóda 1: Aplikujte pozdĺž osi

numpy. Apply_along_axis ( 1d_funkcia , os , arr , *argumenty , **quargy )

V syntaxi máme funkciu „numpy.apply“, ktorej odovzdávame päť argumentov. Prvý argument, ktorým je „1d_function“, funguje na jednorozmernom poli, ktoré je potrebné. Zatiaľ čo druhý argument, „os“, je ten, na ktorej osi chcete pole rozrezať a použiť túto funkciu. Tretím parametrom je „arr“, čo je dané pole, na ktoré chceme funkciu aplikovať. Zatiaľ čo „*args“ a „*kwargs“ sú ďalšie argumenty, ktoré nie je potrebné pridávať.







Príklad 1:

Smerom k lepšiemu pochopeniu metód „použiť“ uvádzame príklad na kontrolu fungovania metód aplikácie. V tomto prípade vykonáme funkciu „apply_along_Axis“. Poďme k nášmu prvému kroku. Najprv zahrnieme naše knižnice NumPy ako np. A potom vytvoríme pole s názvom „arr“, ktoré obsahuje maticu 3 × 3 s celočíselnými hodnotami, ktoré sú „8, 1, 7, 4, 3, 9, 5, 2 a 6“. V ďalšom riadku vytvoríme premennú s názvom „pole“, ktorá je zodpovedná za uloženie výsledku funkcie apply_along_Axis.



Tejto funkcii odovzdávame tri argumenty. Prvá je funkcia, ktorú chceme použiť na pole, v našom prípade je to funkcia sorted, pretože chceme, aby bolo naše pole triedené. Potom odovzdáme druhý argument „1“, čo znamená, že chceme rozdeliť naše pole pozdĺž osi = 1. Laslty, odovzdáme pole, ktoré sa má v tomto prípade triediť. Na konci kódu jednoducho vytlačíme obe polia – pôvodné pole aj výsledné pole – ktoré sa zobrazia pomocou príkazu print().



importovať numpy ako napr.

arr = napr. pole ( [ [ 8 , 1 , 7 ] , [ 4 , 3 , 9 ] , [ 5 , dva , 6 ] ] )

pole = napr. Apply_along_axis ( triedené , 1 , arr )

vytlačiť ( 'pôvodné pole je:' , arr )

vytlačiť ( 'triedené pole je:' , pole )





Ako môžeme vidieť v nasledujúcom výstupe, zobrazili sme obe polia. V prvom sú hodnoty náhodne umiestnené v každom riadku matice. Ale v druhom vidíme zoradené pole. Odkedy sme prešli cez os „1“, nezoradilo sa celé pole, ale zoradilo ho po riadkoch, ako je zobrazené. Každý riadok je zoradený. Prvý riadok v danom poli je „8, 1 a 7“. V zoradenom poli je prvý riadok „1, 7 a 8“. Rovnako ako toto, každý riadok je zoradený.



Metóda 2: Aplikujte cez os

numpy. apply_over_axes ( func , a , osi )

V danej syntaxi máme funkciu numpy.apply_over_axis, ktorá je zodpovedná za aplikáciu funkcie na danej osi. Vo vnútri funkcie apply_over_axis odovzdávame tri argumenty. Prvým je funkcia, ktorá sa má vykonávať. Druhým je samotné pole. A posledná je os, na ktorej chceme funkciu aplikovať.

Príklad 2:

V nasledujúcom prípade vykonáme druhú metódu funkcie „použiť“, v ktorej vypočítame súčet trojrozmerného poľa. Jedna vec, ktorú si treba zapamätať, je, že súčet dvoch polí neznamená, že vypočítame celé pole. V niektorých poliach vypočítame súčet po riadkoch, čo znamená, že sčítame riadky a dostaneme z nich jeden prvok.

Poďme ďalej k nášmu kódu. Najprv importujeme balík NumPy a potom vytvoríme premennú, ktorá obsahuje trojrozmerné pole. V našom prípade je premenná „arr“. V ďalšom riadku vytvoríme ďalšiu premennú, ktorá obsahuje výsledné pole funkcie apply_over_axis. Funkciu apply_over_Axis priradíme premennej „arr“ s tromi argumentmi. Prvým argumentom je vstavaná funkcia NumPy na výpočet sumy, ktorá je np.sum. Druhým parametrom je samotné pole. Tretím argumentom je os, na ktorej sa funkcia aplikuje, v tomto prípade máme os „[0, 2]“. Na konci kódu vykonáme obe polia pomocou príkazu print().

importovať numpy ako napr.

arr = napr. pole ( [ [ [ 6 , 12 , dva ] , [ dva , 9 , 6 ] , [ 18 , 0 , 10 ] ] ,

[ [ 12 , 7 , 14 ] , [ dva , 17 , 18 ] , [ 0 , dvadsaťjeden , 8 ] ] ] )

pole = napr. apply_over_axes ( napr. súčet , arr , [ 0 , dva ] )

vytlačiť ( 'pôvodné pole je:' , arr )

vytlačiť ( 'súčet poľa je:' , pole )

Ako je znázornené na nasledujúcom obrázku, vypočítali sme niektoré z našich trojrozmerných polí pomocou funkcie apply_over_axis. Prvé zobrazené pole je pôvodné pole s tvarom „2, 3, 3“ a druhé je súčet riadkov. Súčet v prvom riadku je „53“, v druhom je „54“ a v poslednom je „57“.

Záver

V tomto článku sme študovali, ako sa funkcia Apply používa v NumPy a ako môžeme aplikovať rôzne funkcie na polia pozdĺž alebo cez os. Je ľahké použiť akúkoľvek funkciu na požadovaný riadok alebo stĺpec tak, že ich rozdelíte pomocou metód „použiť“, ktoré poskytuje NumPy. Je to efektívny spôsob, keď ho nemusíme aplikovať na celé pole. Dúfame, že tento príspevok vám pomôže naučiť sa používať metódu aplikácie.