NumPy ringhääling

Numpy Ringhaaling



Erineva suurusega massiive ei saa lisada, neist lahutada ega muul viisil aritmeetikas kasutada. Üks lähenemisviis on väikese massiivi dubleerimine, et anda sellele samad mõõtmed ja suurus kui suuremale massiivile. Massiiviaritmeetika läbiviimisel pakub NumPy massiiviedastusena tuntud funktsiooni, mis võib teie koodi oluliselt lühendada ja lihtsustada. Sellest õpetusest saate teada massiivilevi idee ja selle kasutamise kohta NumPys. Lisaks pakutakse mitmeid näidisprogramme.

Mis on NumPy ringhääling?

Erineva kujuga massiividega aritmeetiliste toimingute tegemisel viitab NumPy sellele kui levile. Neid massiivitoiminguid tehakse sageli vastavate elementidega. Kui kahel massiivil on sama kuju, saab seda nendega hõlpsalt teha. Kuigi see kontseptsioon on kasulik, ei ole leviedastus alati soovitatav, kuna see võib põhjustada ebaefektiivset mälukasutust, mis aeglustab arvutusi. NumPy toimingud tehakse sageli massiivipaaridega, mis on jaotatud elementide kaupa.

Ringhäälingu reeglid

Saates tuleb järgida teatud juhiseid. Neid kirjeldatakse allpool:







  1. Madalama järgu massiivi kujundile on oluline lisada 1-d, kuni mõlemad massiivi kujundid on sama pikkusega, kui kahel massiivil ei ole sama auaste.
  2. Kaks massiivi loetakse ühilduvaks, kui neil on sama suurus või kui ühe neist on mõõtmete suurus seatud väärtusele 1.
  3. Massiive saab koos edastada ainult siis, kui nende suurused ja mõõtmed ühtivad.
  4. Kui leviedastus on lõppenud, toimib iga massiiv nii, nagu vastaks selle vorm kahe sisendmassiivi kujundite suurima elemendi omale.
  5. Kui teise massiivi mõõde on suurem kui 1 ja esimese massiivi mõõde on 1, käitub üks massiividest nii, nagu oleks see selle dimensiooniga kopeeritud.

Nüüd käsitleme mõnda näidet ringhäälingu kontseptsiooni rakendamisest.



Näide 1:

Massiivipaaride puhul tehakse NumPy toimingud tavaliselt elemendi haaval. Kõige lihtsama stsenaariumi korral peavad need kaks massiivi olema sama kujuga, nagu allolevas näites:



importida tuim

üks_arr = tuim. massiivi ( [ 2.0 , 3.0 , 1.0 ] )

kaks_arr = tuim. massiivi ( [ 3.0 , 3.0 , 3.0 ] )

printida ( üks_arr * kaks_arr )





Nagu näete ülaltoodud koodist, on meil kaks massiivi: 'one_arr' ja 'two_ arr'. Igal neist on eraldi väärtuste kogum. Üksuse „one_arr” väärtused on [2.0, 3.0, 1.0] ja kaks _arr on [3.0, 3.0, 3.0]. Seejärel näete, et nende kahe massiivi korrutise arvutamise tulemus on järgmine:



Kui massiivide vormid vastavad teatud nõuetele, vähendab NumPy leviedastusreegel seda piirangut. Kui toimingus on ühendatud massiiv ja skalaarväärtus, näidatakse leviedastust selle kõige elementaarsemal kujul. Nagu näete, sisaldub 3 muutujas nimega 'two_arr'.

importida tuim

üks_arr = tuim. massiivi ( [ 2.0 , 3.0 , 1.0 ] )

kaks_arr = 3.0

printida ( üks_arr * kaks_arr )

Ülaltoodud kood annab järgmise tulemuse.

Eelmises näites, kus 'kaks_arr' oli massiiv, on tulemus samaväärne. Võime kujutleda, et skalaar „two_arr” laieneb aritmeetilise protsessi käigus massiiviks, millel on sama kuju kui „üks _arr”. Massiivis „two_arr” on uusi elemente, mis on vaid esimese skalaari duplikaadid. Venitamise võrdlus on vaid hüpoteetiline. Et edastustoimingud oleks nii mälu kui ka arvutuslikult ökonoomne, on NumPy piisavalt nutikas, et kasutada koopiate tegemise asemel algset skalaarväärtust.

Näide 2:

Siin on veel üks lihtne Pythoni programm, mis edastab. Taas luuakse kaks massiivi, mis sisaldavad erinevaid väärtusi. Väliskorrutise arvutamiseks on vaja 'first_arr' ümber kujundada 3 × 1 kujuga veeruvektoriks. Pärast seda sooritatakse edastus parameetriga 'second_arr', et saada tulemus suurusega 3×2, mida tuntakse 'first_arr' ja 'second_arr'i väliskorrutisena. Ülekandmine 2×3-le on võimalik, kuna 'result_arr' on kujuga 2 ×3, samuti kuju (3,).

Pärast kõigi ülalnimetatud sammude järgimist tuleb maatriksite igasse veergu lisada vektor, mis on 'result_arr' ja 'second_arr'. Nende mõõtmed on 2 × 3 ja (2, ). „Result_arr” transponeerimine annab kujundi 3 × 2, mida saab seejärel edastada sama vormi saamiseks vastu „teine_arr”. Tavaliselt annab selle üleviimine lõpptoote kujuga 2 × 3.

importida tuim

esimene_arr = tuim. massiivi ( [ 12 , 24 , 14 ] )

teine_arr = tuim. massiivi ( [ viisteist , 22 ] )

printida ( tuim. ümber kujundada ( esimene_arr , ( 3 , 1 ) ) * teine_arr )

tulemus_arr = tuim. massiivi ( [ [ 12 , 22 , 31 ] , [ viisteist , 22 , Neli, viis ] ] )

printida ( result_arr + first_arr )

printida ( ( tulemus_arr. T + teine_arr ) . T )

printida ( result_arr + numpy. ümber kujundada ( teine_arr , ( kaks , 1 ) ) )

printida ( result_arr * kaks )

Väljundit saate vaadata allpool.

Näide 3:

Kolmemõõtmelist massiivi saab edastada järgmise Pythoni programmi abil. Selles näites on loodud kaks massiivi nimega 'first_arr' ja 'second_arr'. Massiiv 'first_arr' sisaldab [4,13,26,12] väärtust ja 'second_arr' sisaldab [32,67,45,17] väärtust. Esialgse massiivi 2-mõõtmed muudavad vahet. Pärast koodi käivitamist kuvatakse allpool esimese ja teise massiivi summa. Näete, et koodis on kolm trükilauset, millest igaüks kuvab kordamööda teksti 'Esimene massiiv:', 'Teine massiiv' ja 'Kolmas massiiv:'. Seejärel näidatakse nende kahe vastloodud massiivi summat.

importida tuim

esimene_arr = tuim. massiivi ( [ [ 4 , 13 , 26 , 12 ] , [ 32 , 67 , Neli, viis , 17 ] ] )

teine_arr = tuim. massiivi ( [ 24 , Neli, viis , 66 , 87 ] )

printida ( ' \n Esimene massiiv: ' )

printida ( esimene_arr )

printida ( ' \n Teine massiiv: ' )

printida ( teine_arr )

printida ( ' \n Esimese ja teise massiivi summa: ' )

summa_tulemus = esimene_arr + teine_arr ;

printida ( summa_tulemus )

Siin on antud koodi väljundi ekraanipilt.

Näide 4:

Siin on toodud viimane Pythoni programm, mis edastab kolmemõõtmelist massiivi. Selles programmis on määratud kaks massiivi, millest esimene on kolmemõõtmeline. Pärast koodi käivitamist kuvatakse esimese ja teise massiivi summa, nagu ülal näidatud. Kuigi nende massiivide väärtused on erinevad, on ülejäänud kood sama, mis ülaltoodud näidisprogrammis.

importida tuim

esimene_arr = tuim. massiivi ( [ [ 12 , Neli, viis , 22 , 13 ] , [ 22 , 54 , 25 , 12 ] , [ viiskümmend , 40 , 18 , 26 ] ] )

teine_arr = tuim. massiivi ( [ 12 , 44 , 22 , 12 ] )

printida ( ' \n Esimene massiiv: ' )

printida ( esimene_arr )

printida ( ' \n Teine massiiv: ' )

printida ( teine_arr )

printida ( ' \n Esimese ja teise massiivi summa: ' )

summa_tulemus = esimene_arr + teine_arr ;

printida ( summa_tulemus )

Alloleval joonisel on näha, et esitatakse esimese massiivi 3-mõõtmeline massiiv, millele järgneb 2-mõõtmeline massiiv teisest massiivist ja nende kahe tulemus, mis kasutab levitamispõhimõtet.

Järeldus

Selles artiklis käsitleti ringhäälingut, mis on ülioluline Pythoni kontseptsioon. NumPy puhul viitab termin 'edastus' võimele käsitleda erineva kujuga massiive, tehes samal ajal sageli sooritatavaid aritmeetilisi toiminguid. Eelnimetatud teemat on põhjalikult käsitletud mitmesuguste näidetega. Selles artiklis kasutati mainitud näidisprogramme, et näidata, kuidas edastada vastavalt 1-D, 2-D ja 3-D massiividel. Võite proovida neid näiteid oma süsteemis käivitada ja tulemusi vaadata, et paremini mõista, kuidas kõik üldiselt toimib.