logo

Vermenigvuldiging van twee matrices op één regel met Numpy in Python

Matrixvermenigvuldiging is een bewerking waarbij twee matrices als invoer worden gebruikt en een enkele matrix wordt geproduceerd door rijen van de eerste matrix te vermenigvuldigen met de kolom van de tweede matrix. Zorg er bij matrixvermenigvuldiging voor dat het aantal kolommen van de eerste matrix moet gelijk zijn aan het aantal rijen van de tweede matrix.

Voorbeeld: Vermenigvuldiging van twee matrices met elkaar met een grootte van 3×3.



java regex $
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]]>

Methoden om twee matrices in Python te vermenigvuldigen

1. Expliciete for-lussen gebruiken: Dit is een eenvoudige techniek om matrices te vermenigvuldigen, maar een van de dure methoden voor grotere invoergegevenssets. Hierin gebruiken we geneste voor lussen om elke rij en elke kolom te herhalen.

Als matrix1 a is n x m matrix en matrix2 is a m x l Matrix.



Implementatie:

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)>

>

>

Uitvoer

Java-verzamelingsframework
[[114, 160, 60], [74, 97, 73], [119, 157, 112]]>

In dit programma hebben we geneste for-lussen gebruikt voor de berekening van het resultaat, die door elke rij en kolom van de matrices zullen itereren, en uiteindelijk de som van het product in het resultaat zal accumuleren.

2. Numpy gebruiken: Vermenigvuldiging met behulp van Numpy wordt ook wel vectorisatie genoemd en heeft als hoofddoel het verminderen of verwijderen van het expliciete gebruik van for-lussen in het programma, waardoor de berekening sneller wordt.
Numpy is een ingebouwd pakket in Python voor array-verwerking en manipulatie. Voor grotere matrixbewerkingen gebruiken we het numpy Python-pakket dat 1000 keer sneller is dan de iteratieve methode.
Voor meer informatie over Numpy kunt u terecht op de Koppeling

Implementatie:

stringverwerking in c++

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)>

>

>

Uitgang:

[[ 63 320 83] [ 77 484 102] [ 84 248 117]]>

Gebruik makend van numpig

gebruik van besturingssysteem

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)>

>

>

Uitgang:

stringarray maken in Java
[[ 63 320 83] [ 77 484 102] [ 84 248 117]]>

In het bovenstaande voorbeeld hebben we een puntproduct gebruikt en in de wiskunde is het puntproduct een algebraïsche bewerking waarbij twee vectoren van gelijke grootte worden genomen en één enkel getal wordt geretourneerd. Het resultaat wordt berekend door de overeenkomstige vermeldingen te vermenigvuldigen en deze producten bij elkaar op te tellen.