NumPy transliacija

Numpy Transliacija



Skirtingų dydžių masyvų negalima pridėti, atimti ar kitaip naudoti aritmetikoje. Vienas iš būdų yra dubliuoti mažą masyvą, kad jis būtų tokio paties dydžio ir dydžio kaip ir didesnis. Atlikdama masyvo aritmetiką, NumPy siūlo funkciją, vadinamą masyvo transliavimu, kuri gali žymiai sutrumpinti ir supaprastinti kodą. Šiame vadove sužinosite apie masyvo transliavimo idėją ir kaip ją naudoti NumPy. Be to, pateikiamos kelios programų pavyzdžiai.

Kas yra „NumPy“ transliacija?

Atliekant aritmetines operacijas su įvairių formų masyvais, NumPy tai vadina transliacija. Šios masyvo operacijos dažnai atliekamos su atitinkamais elementais. Jei du masyvai yra vienodos formos, tai galima lengvai padaryti ant jų. Nors ši koncepcija yra naudinga, transliacija ne visada rekomenduojama, nes tai gali sukelti neefektyvų atminties naudojimą, o tai sulėtina skaičiavimą. NumPy operacijos dažnai atliekamos su masyvo poromis, kurios yra suskirstytos po elementus.

Transliacijos taisyklės

Transliuojant reikia laikytis tam tikrų gairių. Jie aprašyti toliau:







  1. Žemesnio rango masyvo formą svarbu pridėti prie 1s, kol abi masyvo formos bus vienodo ilgio, jei dvi masyvai neturi vienodo rango.
  2. Du matricos laikomos suderinamomis, jei jų matmenys yra vienodi arba jei vieno iš jų matmenų dydis nustatytas į 1.
  3. Masyvai gali būti transliuojami kartu tik tuo atveju, jei sutampa jų dydžiai ir matmenys.
  4. Kai transliacija baigta, kiekvienas masyvas veikia taip, lyg jo forma atitiktų didžiausio elemento formą iš dviejų įvesties masyvų.
  5. Jei kito masyvo matmuo yra didesnis nei 1, o pirmojo masyvo matmuo yra 1, vienas iš masyvų elgiasi taip, lyg būtų pakartotas su tuo matmeniu.

Dabar aptarkime keletą transliavimo koncepcijos įgyvendinimo pavyzdžių.



1 pavyzdys:

Masyvų porose NumPy operacijos paprastai atliekamos po kiekvieno elemento. Paprasčiausiu atveju du masyvai turi būti tokios pačios formos, kaip nurodyta toliau pateiktame pavyzdyje:



importuoti nelygus

vienas_arr = nelygus. masyvas ( [ 2.0 , 3.0 , 1.0 ] )

du_arr = nelygus. masyvas ( [ 3.0 , 3.0 , 3.0 ] )

spausdinti ( vienas_arr * du_arr )





Kaip matote iš anksčiau pateikto kodo, turime du masyvus: „one_arr“ ir „two_ arr“. Kiekvienas iš jų turi atskirą vertybių rinkinį. „One_arr“ reikšmės yra [2.0, 3.0, 1.0], o „two _arr“ yra [3.0, 3.0, 3.0]. Tada galite pamatyti, kad šių dviejų masyvų sandaugos apskaičiavimo rezultatas yra toks:



Kai masyvo formos atitinka tam tikrus reikalavimus, NumPy transliavimo taisyklė sumažina šį apribojimą. Kai operacijoje sujungiamas masyvas ir skaliarinė reikšmė, transliavimas demonstruojamas pačia pagrindine forma. Kaip matote, 3 yra kintamajame pavadinimu „two_arr“.

importuoti nelygus

vienas_arr = nelygus. masyvas ( [ 2.0 , 3.0 , 1.0 ] )

du_arr = 3.0

spausdinti ( vienas_arr * du_arr )

Aukščiau pateiktas kodas pateikia tokį rezultatą.

Ankstesniame pavyzdyje, kur „two_arr“ buvo masyvas, rezultatas yra lygiavertis. Galime įsivaizduoti, kad skaliaras „two_arr“ aritmetinio proceso metu išplečiamas į masyvą, kurio forma yra tokia pati kaip „one _arr“. Masyve „two_arr“ yra naujų elementų, kurie yra tik pirmojo skaliro kopijos. Tempimo palyginimas yra tik hipotetinis. Kad transliavimo operacijos būtų kaip atmintis ir kiek įmanoma ekonomiškesnės, „NumPy“ yra pakankamai protinga, kad naudotų originalią skaliarinę vertę, o ne kurtų kopijas.

2 pavyzdys:

Štai dar viena paprasta „Python“ programa, kuri atlieka transliavimą. Dar kartą sukuriami du masyvai su skirtingomis reikšmėmis. Norint apskaičiuoti išorinį sandaugą, būtina pakeisti „first_arr“ į 3 × 1 formos stulpelio vektorių. Po to transliacija vykdoma pagal „second_arr“, kad būtų pateiktas 3 × 2 dydžio rezultatas, žinomas kaip „first_arr“ ir „second_arr“ išorinis produktas. Galima transliuoti 2 × 3, nes „result_arr“ forma yra 2 ×3, taip pat forma (3,).

Atlikus visus aukščiau nurodytus veiksmus, vektorius turi būti įtrauktas į kiekvieną matricų, kurios yra „result_arr“ ir „second_arr“, stulpelius. Jų matmenys yra 2 × 3 ir (2, ). Perkėlus „result_arr“ bus gauta 3 × 2 forma, kuri vėliau gali būti transliuojama prieš „second_arr“, kad būtų gauta tokia pati forma. Paprastai tai perkėlus, gaunamas galutinis produktas, kurio forma yra 2 × 3.

importuoti nelygus

pirmasis_arr = nelygus. masyvas ( [ 12 , 24 , 14 ] )

antras_arr = nelygus. masyvas ( [ penkiolika , 22 ] )

spausdinti ( nelygus. pertvarkyti ( pirmasis_arr , ( 3 , 1 ) ) * second_arr )

rezultatas_arr = nelygus. masyvas ( [ [ 12 , 22 , 31 ] , [ penkiolika , 22 , Keturi. Penki ] ] )

spausdinti ( result_arr + first_arr )

spausdinti ( ( rezultatas_arr. T + second_arr ) . T )

spausdinti ( result_arr + numpy. pertvarkyti ( antras_arr , ( du , 1 ) ) )

spausdinti ( rezultatas_arr * du )

Išvestį galite peržiūrėti žemiau.

3 pavyzdys:

Trimatis masyvas gali būti transliuojamas naudojant šią Python programą. Šiame pavyzdyje buvo sugeneruoti du masyvai, pavadinti „first_arr“ ir „second_arr“. Masyve „first_arr“ yra [4,13,26,12] reikšmės, o „second_arr“ yra [32,67,45,17] reikšmės. Pradinio masyvo 2 matmenys daro skirtumą. Pirmojo ir antrojo masyvo suma bus rodoma žemiau, kai kodas bus įvykdytas. Matote, kad kode yra trys spausdinimo teiginiai, kurių kiekviename paeiliui rodomas tekstas „First array:“, „Second array“ ir „Third array:“. Tada rodoma šių dviejų naujai sugeneruotų masyvų suma.

importuoti nelygus

pirmasis_arr = nelygus. masyvas ( [ [ 4 , 13 , 26 , 12 ] , [ 32 , 67 , Keturi. Penki , 17 ] ] )

antras_arr = nelygus. masyvas ( [ 24 , Keturi. Penki , 66 , 87 ] )

spausdinti ( \n Pirmasis masyvas: ' )

spausdinti ( pirmasis_arr )

spausdinti ( \n Antrasis masyvas: ' )

spausdinti ( antras_arr )

spausdinti ( \n Pirmojo ir antrojo masyvo suma: ' )

suma_rezultatas = first_arr + second_arr ;

spausdinti ( suma_rezultatas )

Čia yra nurodyto kodo išvesties ekrano kopija.

4 pavyzdys:

Čia pateikta paskutinė Python programa, transliuojanti trimatį masyvą. Šioje programoje nurodyti du masyvai, iš kurių pirmasis turi tris matmenis. Pirmojo ir antrojo masyvo suma bus rodoma, kaip parodyta aukščiau, kai kodas bus įvykdytas. Nors reikšmės šiuose masyvuose skiriasi, likęs kodas yra toks pat, kaip ir anksčiau pateiktoje pavyzdinėje programoje.

importuoti nelygus

pirmasis_arr = nelygus. masyvas ( [ [ 12 , Keturi. Penki , 22 , 13 ] , [ 22 , 54 , 25 , 12 ] , [ penkiasdešimt , 40 , 18 , 26 ] ] )

antras_arr = nelygus. masyvas ( [ 12 , 44 , 22 , 12 ] )

spausdinti ( \n Pirmasis masyvas: ' )

spausdinti ( pirmasis_arr )

spausdinti ( \n Antrasis masyvas: ' )

spausdinti ( antras_arr )

spausdinti ( \n Pirmojo ir antrojo masyvo suma: ' )

suma_rezultatas = first_arr + second_arr ;

spausdinti ( suma_rezultatas )

Žemiau esančiame paveikslėlyje galite matyti, kad pateikiamas 3 dimensijos masyvas iš pirmojo masyvo, po kurio – 2 dimensijos masyvas iš antrojo masyvo ir šių dviejų rezultatas, naudojant transliavimo principą.

Išvada

Šiame straipsnyje buvo aptartas transliavimas – esminė Python koncepcija. NumPy terminas „transliavimas“ reiškia gebėjimą valdyti įvairių formų masyvus atliekant dažnai atliekamas aritmetines operacijas. Pirmiau minėta tema buvo išsamiai aprašyta įvairiais pavyzdžiais. Šiame straipsnyje buvo naudojamos minėtos pavyzdinės programos, siekiant parodyti, kaip transliuoti atitinkamai 1-D, 2-D ir 3-D matricose. Galite pabandyti paleisti šiuos pavyzdžius savo sistemoje ir peržiūrėti rezultatus, kad geriau suprastumėte, kaip viskas veikia apskritai.