La multiplicació de matrius és una operació que pren dues matrius com a entrada i produeix una matriu única multiplicant les files de la primera matriu a la columna de la segona matriu. En la multiplicació de matrius, assegureu-vos que el nombre de columnes de la primera matriu ha de ser igual al nombre de files de la segona matriu.
Exemple: Multiplicació de dues matrius entre si de mida 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]]>
Mètodes per multiplicar dues matrius en python
1. Utilitzant bucles for explícits: Aquesta és una tècnica senzilla per multiplicar matrius, però un dels mètodes més cars per a un conjunt de dades d'entrada més gran. En això, utilitzem imbricades. per bucles per repetir cada fila i cada columna.
Si la matriu 1 és a n x m matriu i matriu2 és a m x l matriu.
Implementació:
Python 3
# 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)> |
>
>
emojis d'iphone al telèfon AndroidSortida
[[114, 160, 60], [74, 97, 73], [119, 157, 112]]>
En aquest programa, hem utilitzat bucles imbricats per al càlcul del resultat que iteraran per cada fila i columna de les matrius, per fi acumularà la suma del producte en el resultat.
2. Utilitzant Numpy: La multiplicació utilitzant Numpy també es coneix com a vectorització, que té com a objectiu principal reduir o eliminar l'ús explícit de bucles for al programa pel qual el càlcul es fa més ràpid.
Numpy és una compilació d'un paquet en python per al processament i la manipulació de matrius. Per a operacions de matriu més grans utilitzem el paquet numpy python que és 1000 vegades més ràpid que un mètode iteratiu.
Per obtenir més informació sobre Numpy, visiteu el Enllaç
Implementació:
Python 3
# 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)> |
>
>
Sortida:
[[ 63 320 83] [ 77 484 102] [ 84 248 117]]>
Utilitzant numpy
Python 3
# 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)> |
>
>
Sortida:
[[ 63 320 83] [ 77 484 102] [ 84 248 117]]>
En l'exemple anterior hem utilitzat el producte escalat i en matemàtiques el producte escalat és una operació algebraica que pren dos vectors de la mateixa mida i retorna un sol nombre. El resultat es calcula multiplicant les entrades corresponents i sumant aquests productes.