English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In diesem Beispiel werden wir zwei verschiedene Methoden zur Multiplikation von Matrizen lernen: verschachtelte Schleifen und verschachtelte Liste-Verständnis
Um diesen Beispiel zu verstehen, sollten Sie die folgenden Kenntnisse habenPython-ProgrammierungThema:
In Python können wir Matrizen als verschachtelte Listen (Listen innerhalb von Listen) implementieren.
Wir können jeden Element als eine Zeile der Matrix betrachten.
Zum Beispiel X = [[1, 2], [4, 5], [3, 6]] wird ein3x2Matrix.
Die erste Zeile kann als X[0] gewählt werden. Und der erste Element der ersten Spalte kann als X[0][0] ausgewählt werden.
Die Multiplikation zweier Matrizen X und Y wird nur definiert, wenn die Anzahl der Spalten von X der Anzahl der Zeilen von Y entspricht.
Wenn X eine n x m-Matrix ist und Y eine m x l-Matrix, dann ist XY definiert und hat die Dimensionen n x l (aber YX ist nicht definiert). Hier sind einige Methoden zur Implementierung der Matrixmultiplikation in Python.
# Programm zur Multiplikation von Matrizen mit verschachtelten Schleifen # 3x3 matrix X = [[12,7,3], [4 ,5,6], [7 ,8,9] # 3x4 Matrix Y = [[5,8,1,2], [6,7,3,0], [4,5,9,1] # Ergebnis 3x4 result = [[0,0,0,0], [0,0,0,0], [0,0,0,0]] # Durchsuchen Sie die Zeilen von X for i in range(len(X)): # Durchsuchen Sie die Spalten von Y for j in range(len(Y[0])): # Durchsuchen Sie die Zeilen von Y for k in range(len(Y)): result[i][j] += X[i][k] * Y[k][j] for r in result: print(r)
Ausgabeergebnis
[114, 160, 60, 27] [74, 97, 73, 14] [119, 157, 112, 23]
In diesem Programm verwenden wir verschachtelte for-Schleifen, um jede Zeile und jede Spalte zu durchsuchen. Wir addieren die Summe der Produkte im Ergebnis.
Diese Technik ist einfach, aber mit zunehmender Ordnung der Matrix nimmt die Menge der Berechnungen stark zu.
Für größere Matrixoperationen empfehlen wir optimierte Softwarepakete, wie z.B.NumPy,es ist mehrere Male schneller als der obere Code (ungefähr1000-fach)。
# Programm zur Multiplikation von Matrizen mit verschachtelten Listen # 3x3 Matrix X = [[12,7,3], [4 ,5,6], [7 ,8,9] # 3x4 Matrix Y = [[5,8,1,2], [6,7,3,0], [4,5,9,1] # Ergebnis 3x4 result = [[sum(a*b for a,b in zip(X_row,Y_col)) for Y_col in zip(*Y)] for X_row in X] for r in result: print(r)
Der Ausgabe des Programms ist mit dem oberen gleich. Um das obere Code zu verstehen, müssen wir zunächst die eingebauten Funktionen zip() und*Ver operator dekomprimiert Parameterlisten.
Wir verwenden sofortige verschachtelte Listen, um jedes Element des Matrizenarrays zu durchsuchen. Der Code scheint zunächst sehr komplex und nicht lesbar zu sein. Aber sobald Sie die Techniken der Liste verstehen, mögen Sie vielleicht nicht mehr verschachtelte Schleifen verwenden.