NumPy apraide

Numpy Apraide



Dažāda izmēra masīvus nevar pievienot, atņemt vai citādi izmantot aritmētikā. Viena pieeja ir mazā masīva dublēšana, lai piešķirtu tam tādus pašus izmērus un izmērus kā lielākajam masīvam. Veicot masīva aritmētiku, NumPy piedāvā funkciju, kas pazīstama kā masīva apraide, kas var ievērojami saīsināt un vienkāršot jūsu kodu. Šajā apmācībā jūs uzzināsit par masīva apraides ideju un to, kā to izmantot programmā NumPy. Turklāt tiek nodrošināti vairāki programmu piemēri.

Kas ir NumPy apraide?

Veicot aritmētiskās darbības dažādu formu masīviem, NumPy to dēvē par apraidi. Šīs masīva darbības bieži tiek veiktas ar attiecīgajiem elementiem. Ja diviem masīviem ir vienāda forma, to var viegli izdarīt uz tiem. Lai gan šī koncepcija ir noderīga, apraide ne vienmēr ir ieteicama, jo tā var izraisīt neefektīvu atmiņas izmantošanu, kas palēnina aprēķinu. NumPy darbības bieži tiek veiktas ar masīvu pāriem, kas ir sadalīti pa elementiem.

Apraides noteikumi

Apraides laikā ir jāievēro noteiktas vadlīnijas. Tie ir aprakstīti tālāk:







  1. Zemāka ranga masīva formai ir svarīgi pievienot 1s, līdz abām masīvu formām ir vienāds garums, ja diviem masīviem nav vienāds rangs.
  2. Divi masīvi tiek uzskatīti par saderīgiem, ja tiem ir vienāds dimensijas izmērs vai ja vienam no tiem izmēri ir iestatīti uz 1.
  3. Masīvus var pārraidīt kopā tikai tad, ja to izmēri un izmēri sakrīt.
  4. Kad apraide ir pabeigta, katrs masīvs darbojas tā, it kā tā forma atbilstu lielākajam elementam divu ievades masīvu formās.
  5. Viens no masīviem darbojas tā, it kā tas būtu replicēts ar šo dimensiju, ja otra masīva izmērs ir lielāks par 1 un pirmā masīva izmērs ir 1.

Tagad apspriedīsim dažus apraides koncepcijas īstenošanas piemērus.



1. piemērs:

Uz masīvu pāriem NumPy darbības parasti tiek veiktas pa elementiem. Abiem masīviem visvienkāršākajā scenārijā ir jābūt tādai pašai formai, kā norādīts tālāk esošajā piemērā.



imports nejutīgs

viens_arr = nejutīgs. masīvs ( [ 2.0 , 3.0 , 1.0 ] )

divi_arr = nejutīgs. masīvs ( [ 3.0 , 3.0 , 3.0 ] )

drukāt ( viens_arr * divi_arr )





Kā redzat no iepriekš minētā koda, mums ir divi masīvi: “one_arr” un “two_ arr”. Katrai no tām ir atsevišķa vērtību kopa. “one_arr” vērtības ir [2.0, 3.0, 1.0] un “two _arr” ir [3.0, 3.0, 3.0]. Pēc tam varat redzēt, ka šo divu masīvu reizinājuma aprēķina rezultāts ir šāds:



Ja masīvu formas atbilst noteiktām prasībām, NumPy apraides noteikums samazina šo ierobežojumu. Kad operācijā tiek apvienots masīvs un skalāra vērtība, apraide tiek demonstrēta tās visvienkāršākajā formā. Kā redzat, 3 ir ietverts mainīgajā ar nosaukumu “two_arr”.

imports nejutīgs

viens_arr = nejutīgs. masīvs ( [ 2.0 , 3.0 , 1.0 ] )

divi_arr = 3.0

drukāt ( viens_arr * divi_arr )

Iepriekš minētais kods rada šādu rezultātu.

Iepriekšējā piemērā, kur “two_arr” bija masīvs, rezultāts ir līdzvērtīgs. Mēs varam iedomāties, ka skalārs “two_arr” aritmētiskā procesa laikā tiek izvērsts masīvā, kura forma ir tāda pati kā “one _arr”. Masīvā “two_arr” ir jauni elementi, kas ir tikai pirmā skalāra dublikāti. Stiepšanās salīdzinājums ir tikai hipotētisks. Lai apraides darbības padarītu atmiņu un skaitļošanas ziņā ekonomiskas, cik vien iespējams, NumPy ir pietiekami gudrs, lai izmantotu sākotnējo skalāro vērtību, nevis ražotu kopijas.

2. piemērs:

Šeit ir vēl viena vienkārša Python programma, kas veic apraidi. Vēlreiz tiek izveidoti divi masīvi, kas satur dažādas vērtības. Lai aprēķinātu ārējo reizinājumu, ir jāpārveido “first_arr” kolonnas vektorā ar 3 × 1 formu. Pēc tam apraide tiek veikta pret 'second_arr', lai iegūtu rezultātu ar izmēru 3×2, kas pazīstams kā 'first_arr' un 'second_arr' ārējais produkts. Ir iespējama apraide līdz 2×3, jo 'result_arr' ir 2. forma. ×3, kā arī forma (3,).

Pēc visu iepriekš minēto darbību veikšanas vektors jāiekļauj katrā matricu kolonnā, kas ir “result_arr” un “second_arr”. To izmēri ir 2 × 3 un (2, ). Transponējot “result_arr”, tiks iegūta forma 3×2, ko pēc tam var pārraidīt pret “second_arr”, lai iegūtu tādu pašu formu. Parasti, to transponējot, tiek iegūts galaprodukts formā 2 × 3.

imports nejutīgs

pirmais_arr = nejutīgs. masīvs ( [ 12 , 24 , 14 ] )

otrais_arr = nejutīgs. masīvs ( [ piecpadsmit , 22 ] )

drukāt ( nejutīgs. pārveidot ( pirmais_arr , ( 3 , 1 ) ) * second_arr )

rezultāts_arr = nejutīgs. masīvs ( [ [ 12 , 22 , 31 ] , [ piecpadsmit , 22 , Četri, pieci ] ] )

drukāt ( result_arr + first_arr )

drukāt ( ( rezultāts_arr. T + second_arr ) . T )

drukāt ( result_arr + numpy. pārveidot ( otrais_arr , ( divi , 1 ) ) )

drukāt ( rezultāts_arr * divi )

Izvadi varat apskatīt zemāk.

3. piemērs:

Trīsdimensiju masīvu var pārraidīt, izmantojot šādu Python programmu. Šajā piemērā ir ģenerēti divi masīvi ar nosaukumu “first_arr” un “second_arr”. Masīvā “first_arr” ir [4,13,26,12] vērtības un “second_arr” ir [32,67,45,17] vērtības. Sākotnējā masīva 2 dimensijas rada atšķirību. Pirmā un otrā masīva summa tiks parādīta zemāk pēc koda izpildes. Varat redzēt, ka kodā ir trīs drukas priekšraksti, no kuriem katrs pēc kārtas parāda tekstu “Pirmais masīvs:”, “Otrais masīvs” un “Trešais masīvs:”. Pēc tam tiek parādīta šo divu jaunģenerēto masīvu summa.

imports nejutīgs

pirmais_arr = nejutīgs. masīvs ( [ [ 4 , 13 , 26 , 12 ] , [ 32 , 67 , Četri, pieci , 17 ] ] )

otrais_arr = nejutīgs. masīvs ( [ 24 , Četri, pieci , 66 , 87 ] )

drukāt ( ' \n Pirmais masīvs: ' )

drukāt ( pirmais_arr )

drukāt ( ' \n Otrais masīvs: ' )

drukāt ( otrais_arr )

drukāt ( ' \n Pirmā un otrā masīva summa: ' )

summa_rezultāts = first_arr + second_arr ;

drukāt ( summa_rezultāts )

Šeit ir norādītā koda izvades ekrānuzņēmums.

4. piemērs:

Šeit ir norādīta pēdējā Python programma, kas pārraida trīsdimensiju masīvu. Šajā programmā ir norādīti divi masīvi, no kuriem pirmajam ir trīs dimensijas. Pēc koda izpildes pirmā un otrā masīva summa tiks parādīta, kā parādīts iepriekš. Lai gan vērtības šajos masīvos atšķiras, atlikušais kods ir tāds pats kā iepriekš minētajā programmas paraugā.

imports nejutīgs

pirmais_arr = nejutīgs. masīvs ( [ [ 12 , Četri, pieci , 22 , 13 ] , [ 22 , 54 , 25 , 12 ] , [ piecdesmit , 40 , 18 , 26 ] ] )

otrais_arr = nejutīgs. masīvs ( [ 12 , 44 , 22 , 12 ] )

drukāt ( ' \n Pirmais masīvs: ' )

drukāt ( pirmais_arr )

drukāt ( ' \n Otrais masīvs: ' )

drukāt ( otrais_arr )

drukāt ( ' \n Pirmā un otrā masīva summa: ' )

summa_rezultāts = first_arr + second_arr ;

drukāt ( summa_rezultāts )

Tālāk redzamajā attēlā var redzēt, ka tiek parādīts 3-dimensiju masīvs no pirmā masīva, kam seko 2-dimensiju masīvs no otrā masīva un šo divu rezultātu rezultāts, izmantojot apraides principu.

Secinājums

Šajā rakstā tika apspriesta apraide, kas ir ļoti svarīga Python koncepcija. NumPy termins “apraide” attiecas uz spēju apstrādāt dažādu formu masīvus, veicot bieži veicamās aritmētiskās darbības. Iepriekš minētā tēma ir rūpīgi apskatīta ar dažādiem piemēriem. Šajā rakstā tika izmantotas minētās programmas, lai parādītu, kā pārraidīt attiecīgi 1-D, 2-D un 3-D masīvos. Varat mēģināt palaist šos piemērus savā sistēmā un skatīt rezultātus, lai labāk izprastu, kā viss darbojas kopumā.