NumPy oddajanje

Numpy Oddajanje



Nizov različnih velikosti ni mogoče seštevati, odštevati ali kako drugače uporabiti v aritmetiki. Eden od pristopov je podvajanje majhnega niza, da dobi enake dimenzije in velikost kot večji niz. NumPy pri izvajanju matrične aritmetike ponuja funkcijo, znano kot oddajanje matrike, ki lahko bistveno skrajša in poenostavi vašo kodo. V tej vadnici boste spoznali idejo oddajanja nizov in kako jo uporabiti v NumPy. Poleg tega je na voljo več primerov programov.

Kaj je NumPy Broadcasting?

Pri izvajanju aritmetičnih operacij na nizih različnih oblik NumPy to imenuje oddajanje. Te operacije matrike se pogosto izvajajo na ustreznih elementih. Če imata dve matriki enako obliko, je to mogoče z lahkoto narediti na njiju. Čeprav je ta koncept koristen, oddajanje ni vedno priporočljivo, ker lahko povzroči neučinkovito uporabo pomnilnika, ki upočasni računanje. Operacije NumPy se pogosto izvajajo na parih matrik, ki so razčlenjene po elementih.

Pravila oddajanja

Pri oddajanju je treba upoštevati določen niz smernic. Ti so opisani spodaj:







  1. Pomembno je, da se pred obliko matrike nižjega ranga dodajo 1, dokler obe obliki matrike nimata enake dolžine, če dve matriki nimata istega ranga.
  2. Dve matriki se štejeta za združljivi, če imata enako velikost dimenzij ali če ima ena od njiju velikost dimenzije nastavljeno na 1.
  3. Nizi se lahko oddajajo skupaj le, če se njihove velikosti in dimenzije ujemajo.
  4. Ko je oddajanje končano, vsaka matrika deluje, kot da se njena oblika ujema z obliko največjega elementa v oblikah dveh vhodnih matrik.
  5. Ena od matrik se obnaša, kot da bi bila podvojena s to dimenzijo, če ima druga matrika dimenzijo večjo od 1 in prva matrika ima dimenzijo 1.

Zdaj pa razpravljajmo o nekaterih primerih izvajanja koncepta oddajanja.



Primer 1:

Na parih nizov se operacije NumPy običajno izvajajo element za elementom. V najbolj enostavnem scenariju morata imeti obe matriki enako obliko, kot v spodnjem primeru:



uvoz numpy

one_arr = numpy. niz ( [ 2.0 , 3.0 , 1.0 ] )

two_arr = numpy. niz ( [ 3.0 , 3.0 , 3.0 ] )

tiskanje ( en_arr * two_arr )





Kot lahko vidite iz zgornje kode, imamo dve matriki: ‘one_arr’ in ‘two_ arr’. Vsak od njih ima ločen niz vrednosti. Vrednosti v »one_arr« so [2.0,3.0,1.0] in v »two _arr« so [3.0,3.0,3.0]. Nato lahko vidite, da je rezultat izračuna produkta teh dveh nizov naslednji:



Ko obrazci nizov izpolnjujejo določene zahteve, pravilo oddajanja NumPy zniža to omejitev. Ko sta matrika in skalarna vrednost združeni v operaciji, je oddajanje prikazano v najosnovnejši obliki. Kot lahko vidite, je 3 vsebovan v spremenljivki z imenom 'two_arr.'

uvoz numpy

one_arr = numpy. niz ( [ 2.0 , 3.0 , 1.0 ] )

two_arr = 3.0

tiskanje ( en_arr * two_arr )

Zgornja koda ustvari naslednji rezultat.

V prejšnjem primeru, kjer je bil 'two_arr' niz, je rezultat enakovreden. Lahko si predstavljamo, da se skalar »two_arr« med aritmetičnim postopkom razširi v matriko, ki ima enako obliko kot »one _arr«. Matrika »two_arr« vsebuje nove elemente, ki so le dvojniki prvega skalarja. Primerjava raztezanja je zgolj hipotetična. NumPy je dovolj pameten, da uporabi izvirno skalarno vrednost, namesto da izdela kopije, da naredi operacije oddajanja kot pomnilnik in računsko ekonomične.

Primer 2:

Tukaj je še en preprost program Python, ki izvaja oddajanje. Spet se ustvarita dve matriki, ki vsebujeta različne vrednosti. Za izračun zunanjega produkta je treba preoblikovati 'first_arr' v stolpčni vektor z obliko 3×1. Po tem se oddajanje izvede proti 'second_arr', da se zagotovi rezultat velikosti 3 × 2, znan kot zunanji produkt 'first_arr' in 'second_arr.' Oddajanje v 2 × 3 je možno, ker ima 'result_arr' obliko 2 ×3 kot tudi oblika (3,).

Po izvedbi vseh zgoraj omenjenih korakov mora biti vektor vključen v vsak stolpec matrik, ki sta 'result_arr' in 'second_arr.' Ti imata dimenzije 2×3 in (2, ). Transponiranje 'result_arr' bo prineslo obliko 3×2, ki se lahko nato oddaja proti 'second_arr', da dobimo enako obliko. Običajno prenos tega da končni izdelek v obliki 2×3.

uvoz numpy

prvi_arr = numpy. niz ( [ 12 , 24 , 14 ] )

drugi_arr = numpy. niz ( [ petnajst , 22 ] )

tiskanje ( numpy. preoblikovati ( prvi_arr , ( 3 , 1 ) ) * drugi_arr )

rezultat_arr = numpy. niz ( [ [ 12 , 22 , 31 ] , [ petnajst , 22 , Štiri, pet ] ] )

tiskanje ( rezultat_arr + prvi_arr )

tiskanje ( ( rezultat_arr. T + drugi_arr ) . T )

tiskanje ( rezultat_arr + numpy. preoblikovati ( drugi_arr , ( dva , 1 ) ) )

tiskanje ( rezultat_arr * dva )

Izhod si lahko ogledate spodaj.

Primer 3:

Tridimenzionalno matriko je mogoče oddajati z naslednjim programom Python. V tem primeru sta bili ustvarjeni dve matriki z imenom 'first_arr' in 'second_arr'. Niz 'first_arr' vsebuje [4,13,26,12] vrednosti in 'second_arr' vsebuje [32,67,45,17] vrednosti. Dve razsežnosti začetne matrike naredijo razliko. Vsota prve in druge matrike bo prikazana spodaj po izvedbi kode. Vidite lahko, da imamo v kodi tri izjave za tiskanje, od katerih vsak izmenično prikaže besedilo 'Prvi niz:', 'Drugi niz' in 'Tretji niz:'. Nato se prikaže vsota teh dveh na novo ustvarjenih nizov.

uvoz numpy

prvi_arr = numpy. niz ( [ [ 4 , 13 , 26 , 12 ] , [ 32 , 67 , Štiri, pet , 17 ] ] )

drugi_arr = numpy. niz ( [ 24 , Štiri, pet , 66 , 87 ] )

tiskanje ( ' \n Prvi niz: ' )

tiskanje ( prvi_arr )

tiskanje ( ' \n Drugi niz: ' )

tiskanje ( drugi_arr )

tiskanje ( ' \n Vsota prve in druge matrike: ' )

vsota_rezultat = prvi_arr + drugi_arr ;

tiskanje ( vsota_rezultat )

Tukaj je izhodni posnetek zaslona dane kode.

Primer 4:

Tukaj je podan zadnji program Python, ki oddaja tridimenzionalno matriko. V tem programu sta podani dve matriki, od katerih ima prva tri dimenzije. Vsota prve in druge matrike bo prikazana, kot je prikazano zgoraj, ko bo koda izvedena. Čeprav se vrednosti v teh nizih razlikujejo, je preostala koda enaka tisti, uporabljeni v zgornjem primeru programa.

uvoz numpy

prvi_arr = numpy. niz ( [ [ 12 , Štiri, pet , 22 , 13 ] , [ 22 , 54 , 25 , 12 ] , [ petdeset , 40 , 18 , 26 ] ] )

drugi_arr = numpy. niz ( [ 12 , 44 , 22 , 12 ] )

tiskanje ( ' \n Prvi niz: ' )

tiskanje ( prvi_arr )

tiskanje ( ' \n Drugi niz: ' )

tiskanje ( drugi_arr )

tiskanje ( ' \n Vsota prve in druge matrike: ' )

vsota_rezultat = prvi_arr + drugi_arr ;

tiskanje ( vsota_rezultat )

Na spodnji sliki lahko vidite, da je predstavljen 3-dimenzionalni niz iz prvega niza, ki mu sledi dvodimenzionalni niz iz drugega niza in rezultat teh dveh, ki uporabljata načelo oddajanja.

Zaključek

Ta članek je obravnaval oddajanje, ključni koncept Pythona. V NumPy se izraz 'oddajanje' nanaša na zmožnost obdelave nizov različnih oblik med izvajanjem aritmetičnih operacij, ki se pogosto izvajajo. Omenjena tema je bila temeljito obdelana z različnimi primeri. Ta članek je uporabil omenjene primere programov za prikaz oddajanja v 1-D, 2-D oziroma 3-D nizih. Te primere lahko poskusite zagnati v svojem sistemu in si ogledate rezultate, da boste bolje razumeli, kako vse na splošno deluje.