Multiplikasjon av to matriser på én linje ved å bruke Numpy i Python
Matrisemultiplikasjon er en operasjon som tar to matriser som input og produserer enkeltmatrise ved å multiplisere rader i den første matrisen til kolonnen i den andre matrisen. I matrisemultiplikasjon må du sørge for at antall kolonner i den første matrisen skal være lik antall rader i den andre matrisen.
Eksempel: Multiplikasjon av to matriser med hverandre i størrelsen 3×3.
Input:matrix1 = ([1, 2, 3], [3, 4, 5], [7, 6, 4]) matrix2 = ([5, 2, 6], [5, 6, 7], [7, 6, 4]) Output : [[36 32 32] [70 60 66] [93 74 100]]
Metoder for å multiplisere to matriser i python
1. Bruker eksplisitt for loops: Dette er en enkel teknikk for å multiplisere matriser, men en av de dyre metodene for større inndatasett. I dette bruker vi nestede til løkker for å iterere hver rad og hver kolonne.
Hvis matrise1 er en n x m matrise og matrise2 er en m x l matrise.
Gjennomføring:
Python3
# input two matrices of size n x m> matrix1> => [[> 12> ,> 7> ,> 3> ],> > [> 4> ,> 5> ,> 6> ],> > [> 7> ,> 8> ,> 9> ]]> matrix2> => [[> 5> ,> 8> ,> 1> ],> > [> 6> ,> 7> ,> 3> ],> > [> 4> ,> 5> ,> 9> ]]> res> => [[> 0> for> x> in> range> (> 3> )]> for> y> in> range> (> 3> )]> # explicit for loops> for> i> in> range> (> len> (matrix1)):> > for> j> in> range> (> len> (matrix2[> 0> ])):> > for> k> in> range> (> len> (matrix2)):> > # resulted matrix> > res[i][j]> +> => matrix1[i][k]> *> matrix2[k][j]> print> (res)> |
Produksjon
[[114, 160, 60], [74, 97, 73], [119, 157, 112]]
I dette programmet har vi brukt nestet for loops for beregning av resultat som vil iterere gjennom hver rad og kolonne i matrisene, til slutt vil det akkumulere summen av produktet i resultatet.
2. Bruker Numpy: Multiplikasjon ved bruk av Numpy er også kjent som vektorisering som har som hovedmål å redusere eller fjerne den eksplisitte bruken av for loops i programmet som gjør beregningen raskere.
Numpy er en innebygd pakke i python for array-behandling og manipulering. For større matriseoperasjoner bruker vi numpy python-pakken som er 1000 ganger raskere enn iterativ én metode.
For detaljer om Numpy, vennligst besøk Link
Gjennomføring:
Python3
# We need install numpy in order to import it> import> numpy as np> # input two matrices> mat1> => ([> 1> ,> 6> ,> 5> ],[> 3> ,> 4> ,> 8> ],[> 2> ,> 12> ,> 3> ])> mat2> => ([> 3> ,> 4> ,> 6> ],[> 5> ,> 6> ,> 7> ],[> 6> ,> 56> ,> 7> ])> # This will return dot product> res> => np.dot(mat1,mat2)> # print resulted matrix> print> (res)> |
Produksjon:
[[ 63 320 83] [ 77 484 102] [ 84 248 117]]
Ved hjelp av nusset
Python3
# same result will be obtained when we use @ operator> # as shown below(only in python>3.5)> import> numpy as np> # input two matrices> mat1> => ([> 1> ,> 6> ,> 5> ],[> 3> ,> 4> ,> 8> ],[> 2> ,> 12> ,> 3> ])> mat2> => ([> 3> ,> 4> ,> 6> ],[> 5> ,> 6> ,> 7> ],[> 6> ,> 56> ,> 7> ])> # This will return matrix product of two array> res> => mat1 @ mat2> # print resulted matrix> print> (res)> |
Produksjon:
[[ 63 320 83] [ 77 484 102] [ 84 248 117]]
I eksemplet ovenfor har vi brukt punktprodukt og i matematikk er punktproduktet en algebraisk operasjon som tar to like store vektorer og returnerer et enkelt tall. Resultatet beregnes ved å multiplisere tilsvarende oppføringer og legge sammen disse produktene.