Množenje matrike je operacija, ki vzame dve matriki kot vhod in ustvari eno samo matriko z množenjem vrstic prve matrike v stolpec druge matrike. Pri množenju matrik se prepričajte, da število stolpcev prve matrike mora biti enako številu vrstic druge matrike.
primer: Množenje dveh matrik velikosti 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]]>
Metode za množenje dveh matrik v pythonu
1. Uporaba eksplicitnih zank for: To je preprosta tehnika za množenje matrik, vendar ena izmed dragih metod za večji nabor vhodnih podatkov. Pri tem uporabljamo ugnezdene za zanke za ponavljanje vsake vrstice in vsakega stolpca.
Če je matrix1 a n x m matrika in matrika2 je a m x l matrica.
Izvedba:
je poseben znak
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)> |
>
>Izhod
[[114, 160, 60], [74, 97, 73], [119, 157, 112]]>
V tem programu smo za izračun rezultata uporabili ugnezdene zanke for, ki bodo ponavljale vsako vrstico in stolpec matrik, nazadnje pa bodo v rezultatu zbrale vsoto produkta.
2. Uporaba Numpyja: Množenje z uporabo Numpyja poznamo tudi kot vektorizacijo, katerega glavni cilj je zmanjšati ali odstraniti eksplicitno uporabo zank for v programu, s čimer postane računanje hitrejše.
Numpy je vgrajen v paket v pythonu za obdelavo nizov in manipulacijo. Za večje matrične operacije uporabljamo paket numpy python, ki je 1000-krat hitrejši od iterativne ene metode.
Za podrobnosti o Numpy obiščite Povezava
Izvedba:
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)> |
>
>
Izhod:
[[ 63 320 83] [ 77 484 102] [ 84 248 117]]>
Uporaba numpy
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)> |
>
>
Izhod:
[[ 63 320 83] [ 77 484 102] [ 84 248 117]]>
V zgornjem primeru smo uporabili pikčasti produkt, v matematiki pa je pikčasti produkt algebraična operacija, ki vzame dva vektorja enake velikosti in vrne eno samo število. Rezultat se izračuna z množenjem ustreznih vnosov in seštevanjem teh produktov.