Sõltuvalt tingimustest on massiivile mis tahes funktsiooni rakendamiseks kaks meetodit. Saame rakendada funktsiooni 'rakenda üle telje', mis on kasulik, kui rakendame funktsiooni igale massiivi elemendile ükshaaval, ja see on kasulik n-mõõtmeliste massiivide jaoks. Teine meetod on 'rakendamine piki telge', mis kehtib ühemõõtmelise massiivi puhul.
Süntaks:
1. meetod: kandke piki telge
tuim. rakenda_piki_telge ( 1d_funktsioon , telg , arr , *args , **kalad )Süntaksis on funktsioon numpy.apply, millele edastame viis argumenti. Esimene argument, mis on '1d_function', töötab ühemõõtmelises massiivis, mis on nõutav. Kuigi teine argument, 'telg', on see, mille teljele soovite massiivi tükeldada ja seda funktsiooni rakendada. Kolmas parameeter on “arr”, mis on antud massiiv, millele soovime funktsiooni rakendada. Kuigi '*args' ja '*kwargs' on täiendavad argumendid, mida pole vaja lisada.
Näide 1:
Rakendamise meetodite paremaks mõistmiseks esitame näite, et kontrollida rakendamismeetodite toimimist. Sel juhul täidame funktsiooni 'apply_along_Axis'. Jätkame oma esimese sammuga. Esmalt kaasame oma NumPy teegid np. Seejärel loome massiivi nimega 'arr', mis sisaldab 3 × 3 maatriksit täisarvuliste väärtustega, mis on '8, 1, 7, 4, 3, 9, 5, 2 ja 6'. Järgmisel real loome muutuja nimega 'massiivi', mis vastutab funktsiooni apply_along_Axis tulemuse hoidmise eest.
Sellele funktsioonile edastame kolm argumenti. Esimene on funktsioon, mida tahame massiivile rakendada, meie puhul on see sorteeritud funktsioon, kuna tahame, et meie massiiv oleks sorteeritud. Seejärel edastame teise argumendi '1', mis tähendab, et tahame oma massiivi viiludeks piki telge = 1. Lõpuks edastame sel juhul sortitava massiivi. Koodi lõpus prindime lihtsalt mõlemad massiivid – nii algse massiivi kui ka tulemuseks oleva massiivi –, mis kuvatakse print() lause abil.
importida tuim nagu nt.
arr = nt. massiivi ( [ [ 8 , 1 , 7 ] , [ 4 , 3 , 9 ] , [ 5 , kaks , 6 ] ] )
massiivi = nt. rakenda_piki_telge ( sorteeritud , 1 , arr )
printida ( 'algne massiiv on:' , arr )
printida ( 'sorteeritud massiiv on:' , massiivi )
Nagu näeme järgmises väljundis, kuvasime mõlemad massiivid. Esimeses on väärtused paigutatud juhuslikult igale maatriksi reale. Kuid teises näeme sorteeritud massiivi. Kuna möödusime teljest „1”, pole see kogu massiivi sorteerinud, vaid sorteeris selle rea kaupa, nagu kuvatakse. Iga rida on sorteeritud. Antud massiivi esimene rida on '8, 1 ja 7'. Sorditud massiivi esimene rida on '1, 7 ja 8'. Samamoodi nagu see, sorteeritakse iga rida.
2. meetod: kandke üle telje
tuim. rakenda_üle_telgede ( func , a , teljed )Antud süntaksis on meil funktsioon numpy.apply_over_axis, mis vastutab funktsiooni rakendamise eest antud teljel. Funktsiooni apply_over_axis sees edastame kolm argumenti. Esimene on funktsioon, mida tuleb täita. Teine on massiiv ise. Ja viimane on telg, millele soovime funktsiooni rakendada.
Näide 2:
Järgmisel juhul teostame funktsiooni 'rakendamine' teise meetodi, mille käigus arvutame kolmemõõtmelise massiivi summa. Üks asi, mida meeles pidada, on see, et kahe massiivi summa ei tähenda, et arvutame kogu massiivi. Mõnes massiivis arvutame reapõhise summa, mis tähendab, et liidame read ja saame neist ühe elemendi.
Liigume edasi oma koodi juurde. Esmalt impordime paketi NumPy ja seejärel loome muutuja, mis hoiab kolmemõõtmelist massiivi. Meie puhul on muutujaks “arr”. Järgmisel real loome teise muutuja, mis sisaldab funktsiooni apply_over_axis saadud massiivi. Määrame kolme argumendiga muutujale “arr” funktsiooni apply_over_Axis. Esimene argument on NumPy sisseehitatud funktsioon summa arvutamiseks, mis on np.sum. Teine parameeter on massiiv ise. Kolmas argument on telg, mille üle funktsiooni rakendatakse, sel juhul on meil telg '[0, 2]'. Koodi lõpus käivitame mõlemad massiivid print() lause abil.
importida tuim nagu nt.arr = nt. massiivi ( [ [ [ 6 , 12 , kaks ] , [ kaks , 9 , 6 ] , [ 18 , 0 , 10 ] ] ,
[ [ 12 , 7 , 14 ] , [ kaks , 17 , 18 ] , [ 0 , kakskümmend üks , 8 ] ] ] )
massiivi = nt. rakenda_üle_telgede ( nt. summa , arr , [ 0 , kaks ] )
printida ( 'algne massiiv on:' , arr )
printida ( 'massiivi summa on:' , massiivi )
Nagu on näidatud järgmisel joonisel, arvutasime mõned oma kolmemõõtmelised massiivid, kasutades funktsiooni apply_over_axis. Esimene kuvatav massiiv on algne massiiv kujuga '2, 3, 3' ja teine on ridade summa. Esimese rea summa on '53', teine on '54' ja viimane on '57'.
Järeldus
Selles artiklis uurisime, kuidas rakendusfunktsiooni NumPy kasutatakse ja kuidas erinevaid funktsioone rakendada massiividel piki või üle telje. Mis tahes funktsiooni on lihtne soovitud reale või veerule rakendada, lõigates need NumPy pakutavate rakendusmeetodite abil. See on tõhus viis, kui me ei pea seda kogu massiivile rakendama. Loodame, et see postitus on teile kasulik rakendusmeetodi kasutamise õppimisel.