Die Matrixmultiplikation ist eine Operation, die zwei Matrizen als Eingabe verwendet und durch Multiplikation von Zeilen der ersten Matrix mit der Spalte der zweiten Matrix eine einzelne Matrix erzeugt. Stellen Sie bei der Matrixmultiplikation sicher, dass dies der Fall ist Die Anzahl der Spalten der ersten Matrix sollte gleich der Anzahl der Zeilen der zweiten Matrix sein.
Beispiel: Multiplikation zweier Matrizen miteinander der Größe 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]]>
Methoden zum Multiplizieren zweier Matrizen in Python
1. Verwendung expliziter for-Schleifen: Dies ist eine einfache Technik zum Multiplizieren von Matrizen, aber eine der kostspieligen Methoden für größere Eingabedatensätze. Hier verwenden wir verschachtelte für Schleifen, um jede Zeile und jede Spalte zu iterieren.
Wenn Matrix1 a ist n x m Matrix und Matrix2 ist a m x l Matrix.
Implementierung:
Python3
vollständige Formidee
# 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)> |
>
>Ausgabe
[[114, 160, 60], [74, 97, 73], [119, 157, 112]]>
In diesem Programm haben wir verschachtelte for-Schleifen zur Berechnung des Ergebnisses verwendet, die jede Zeile und Spalte der Matrizen durchlaufen und schließlich die Produktsumme im Ergebnis akkumulieren.
2. Verwenden von Numpy: Die Multiplikation mit Numpy wird auch als Vektorisierung bezeichnet und zielt hauptsächlich darauf ab, die explizite Verwendung von for-Schleifen im Programm zu reduzieren oder zu entfernen, wodurch die Berechnung schneller wird.
Numpy ist ein in Python integriertes Paket zur Array-Verarbeitung und -Manipulation. Für größere Matrixoperationen verwenden wir das Numpy-Python-Paket, das 1000-mal schneller ist als die iterative Methode.
Weitere Informationen zu Numpy finden Sie unter Verknüpfung
statisch in c
Implementierung:
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)> |
>
>
Ausgabe:
[[ 63 320 83] [ 77 484 102] [ 84 248 117]]>
Benutzen Numpy
Sanjay Dutt und
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)> |
>
dritte Normalform
>
Ausgabe:
[[ 63 320 83] [ 77 484 102] [ 84 248 117]]>
Im obigen Beispiel haben wir das Skalarprodukt verwendet und in der Mathematik ist das Skalarprodukt eine algebraische Operation, die zwei Vektoren gleicher Größe nimmt und eine einzelne Zahl zurückgibt. Das Ergebnis wird durch Multiplikation entsprechender Einträge und Addition dieser Produkte berechnet.