NumPy Apply -toiminto

Numpy Apply Toiminto



Pythonin tarjoama sisäänrakennettu kirjasto, joka tunnetaan nimellä NumPy, antaa meille mahdollisuuden rakentaa moniulotteisia taulukoita, muokata niitä ja suorittaa erilaisia ​​aritmeettisia laskelmia niille. Apply-toiminnon tarjoaa myös NumPy-paketti. Tyypillinen soveltamisfunktion käyttötapaus on samanlainen kuin skenaario, jossa haluamme viipaloida taulukon ja suorittaa joitain toimintoja luettelon jokaiselle elementille, esimerkiksi jos haluamme neliöidä rivin jokaisen kohteen. Tietenkin Pythonissa tiedämme, että for-silmukat ovat hitaita, joten haluaisimme välttää niitä, jos mahdollista. Käytä-toimintoa voidaan käyttää, jos haluat tehdä saman toiminnon datakehyksen jokaiselle riville tai sarakkeelle. Toisin sanoen se tekee mitä haluat tehdä for-silmukalla ilman, että sinun tarvitsee kirjoittaa for-silmukkaa.

On olemassa kaksi tapaa soveltaa mitä tahansa funktiota taulukkoon ehdoista riippuen. Voimme käyttää 'apply over the axis' -funktiota, joka on hyödyllinen, kun käytämme funktiota taulukon jokaiseen elementtiin yksitellen, ja se on hyödyllinen n-ulotteisille taulukoille. Toinen menetelmä on 'käytä akselia pitkin', joka koskee yksiulotteista taulukkoa.

Syntaksi:

Tapa 1: Levitä akselia pitkin

nuhjuinen. soveltaa_akselia pitkin ( 1d_funktio , akseli , arr , *argumentit , **korut )

Syntaksissa meillä on 'numpy.apply'-funktio, jolle välitämme viisi argumenttia. Ensimmäinen argumentti, joka on '1d_function', toimii yksiulotteisessa taulukossa, joka on pakollinen. Toinen argumentti, 'akseli', on se, jolle akselille haluat leikata taulukon ja käyttää kyseistä funktiota. Kolmas parametri on 'arr', joka on annettu matriisi, johon haluamme soveltaa funktiota. Vaikka '*args' ja '*kwargs' ovat lisäargumentteja, joita ei tarvitse lisätä.







Esimerkki 1:

Siirtyessään kohti parempaa ymmärrystä 'apply'-menetelmistä suoritamme esimerkin, jolla tarkistamme soveltamismenetelmien toimivuuden. Tässä tapauksessa suoritamme 'apply_along_Axis' -toiminnon. Jatketaan ensimmäiseen vaiheeseemme. Sisällytämme ensin NumPy-kirjastomme np. Ja sitten luomme taulukon nimeltä 'arr', joka sisältää 3 × 3 -matriisin kokonaislukuarvoilla, jotka ovat '8, 1, 7, 4, 3, 9, 5, 2 ja 6'. Seuraavalla rivillä luomme muuttujan nimeltä 'array', joka vastaa funktion apply_along_Axis tuloksesta.



Tälle funktiolle välitämme kolme argumenttia. Ensimmäinen on funktio, jota haluamme soveltaa taulukkoon, meidän tapauksessamme se on lajiteltu funktio, koska haluamme, että taulukkomme lajitellaan. Sitten välitämme toisen argumentin '1', mikä tarkoittaa, että haluamme viipaloida taulukon akseli = 1 pitkin. Lopuksi välitämme tässä tapauksessa lajiteltavan taulukon. Koodin lopussa tulostetaan vain molemmat taulukot – alkuperäinen sekä tuloksena oleva taulukko – jotka näytetään print()-käskyn avulla.



tuonti nuhjuinen kuten esim.

arr = esim. joukko ( [ [ 8 , 1 , 7 ] , [ 4 , 3 , 9 ] , [ 5 , kaksi , 6 ] ] )

joukko = esim. soveltaa_akselia pitkin ( lajiteltu , 1 , arr )

Tulosta ( 'alkuperäinen matriisi on:' , arr )

Tulosta ( 'lajiteltu matriisi on:' , joukko )





Kuten voimme nähdä seuraavassa lähdössä, näytimme molemmat taulukot. Ensimmäisessä arvot sijoitetaan satunnaisesti matriisin jokaiselle riville. Mutta toisessa voimme nähdä lajitellun taulukon. Koska ohitimme akselin '1', se ei ole lajitellut koko taulukkoa, mutta se lajitteli sen rivikohtaisesti näytetyllä tavalla. Jokainen rivi on lajiteltu. Annetun taulukon ensimmäinen rivi on '8, 1 ja 7'. Lajitetussa taulukossa ensimmäinen rivi on '1, 7 ja 8'. Samalla tavalla kuin tämä, jokainen rivi lajitellaan.



Tapa 2: Levitä akselin yli

nuhjuinen. soveltaa_akselien yli ( func , a , kirveet )

Annetussa syntaksissa meillä on numpy.apply_over_axis-funktio, joka vastaa funktion soveltamisesta tietylle akselille. Käytä_akselin päälle -funktion sisällä välitämme kolme argumenttia. Ensimmäinen on suoritettava toiminto. Toinen on itse matriisi. Ja viimeinen on akseli, jolle haluamme käyttää funktiota.

Esimerkki 2:

Seuraavassa tapauksessa suoritamme 'apply'-funktion toisen menetelmän, jossa laskemme kolmiulotteisen taulukon summan. Yksi asia on muistaa, että kahden taulukon summa ei tarkoita, että laskemme koko taulukon. Joissakin taulukoissa lasketaan rivikohtainen summa, mikä tarkoittaa, että lisäämme rivit ja saamme niistä yhden elementin.

Siirrytään eteenpäin koodiimme. Tuomme ensin NumPy-paketin ja luomme sitten muuttujan, joka sisältää kolmiulotteisen taulukon. Meidän tapauksessamme muuttuja on 'arr'. Seuraavalla rivillä luomme toisen muuttujan, joka sisältää funktion apply_over_axis tuloksena olevan taulukon. Määritämme funktion apply_over_Axis muuttujalle 'arr' kolmella argumentilla. Ensimmäinen argumentti on NumPyn sisäänrakennettu funktio, joka laskee summan, joka on np.sum. Toinen parametri on itse matriisi. Kolmas argumentti on akseli, jolla funktiota käytetään, tässä tapauksessa meillä on '[0, 2]'-akseli. Koodin lopussa suoritamme molemmat taulukot print()-käskyn avulla.

tuonti nuhjuinen kuten esim.

arr = esim. joukko ( [ [ [ 6 , 12 , kaksi ] , [ kaksi , 9 , 6 ] , [ 18 , 0 , 10 ] ] ,

[ [ 12 , 7 , 14 ] , [ kaksi , 17 , 18 ] , [ 0 , kaksikymmentäyksi , 8 ] ] ] )

joukko = esim. soveltaa_akselien yli ( esim. summa , arr , [ 0 , kaksi ] )

Tulosta ( 'alkuperäinen matriisi on:' , arr )

Tulosta ( 'taulukon summa on:' , joukko )

Kuten seuraavassa kuvassa näkyy, laskemme jotkin kolmiulotteisista taulukoistamme käyttämällä apply_over_axis -funktiota. Ensimmäinen näytetty taulukko on alkuperäinen taulukko, jonka muoto on '2, 3, 3', ja toinen on rivien summa. Ensimmäisen rivin summa on '53', toisen on '54' ja viimeisen '57'.

Johtopäätös

Tässä artikkelissa tutkimme, kuinka Apply-funktiota käytetään NumPyssa ja kuinka voimme soveltaa eri toimintoja taulukoihin akselin suuntaisesti tai yli. On helppo käyttää mitä tahansa funktiota halutulle riville tai sarakkeelle leikkaamalla ne NumPyn tarjoamilla 'apply'-menetelmillä. Se on tehokas tapa, kun meidän ei tarvitse soveltaa sitä koko taulukkoon. Toivomme, että tästä postauksesta on sinulle hyötyä, kun opit käyttämään hakumenetelmää.