Python-Matrixmultiplikationscode
Führen Sie eine Matrixmultiplikation in reinem Python ohne Abhängigkeiten durch. Führen Sie unseren Vergleich zwischen verschachtelten Schleifen und optimierten Strukturen durch.
Übersicht
Die Matrixmultiplikation ist eine grundlegende mathematische Operation in der linearen Algebra, Computergrafik und maschinellen Lernen. Dabei wird aus zwei Matrizen eine dritte Matrize erstellt, indem Skalarprodukte aus Zeilen und Spalten berechnet werden.
Um Matrix A mit Matrix B zu multiplizieren, muss die Anzahl der Spalten in A der Anzahl der Zeilen in B entsprechen. Die resultierende Matrix hat die Abmessungen der Zeilen von A und der Spalten von B.
In reinem Python wird die Matrixmultiplikation mithilfe von drei verschachtelten Schleifen implementiert. Diese O(n³)-Operation ist zwar einfach zu schreiben, aber langsam, weshalb Datenwissenschaftler in der Produktion spezielle Bibliotheks-Engines wieNumPyverwenden.
Code- und Ausführungsausgabe
Reine Python-Matrixmultiplikation mit verschachtelten Schleifen und Listenverständnis.
def multiply_matrices(A, B):
rows_A = len(A)
cols_A = len(A[0])
rows_B = len(B)
cols_B = len(B[0])
if cols_A != rows_B:
raise ValueError("Cannot multiply: column size of A must match row size of B.")
# Initialize result matrix with zeros
result = [[0 for _ in range(cols_B)] for _ in range(rows_A)]
# Iterate through rows of A
for i in range(rows_A):
# Iterate through columns of B
for j in range(cols_B):
# Iterate through rows of B (or columns of A)
for k in range(cols_A):
result[i][j] += A[i][k] * B[k][j]
return result
# 2x3 Matrix A
matrix_A = [
[1, 2, 3],
[4, 5, 6]
]
# 3x2 Matrix B
matrix_B = [
[7, 8],
[9, 10],
[11, 12]
]
print("Matrix A (2x3):", matrix_A)
print("Matrix B (3x2):", matrix_B)
res = multiply_matrices(matrix_A, matrix_B)
print("Product (2x2):", res)Matrix A (2x3): [[1, 2, 3], [4, 5, 6]]
Matrix B (3x2): [[7, 8], [9, 10], [11, 12]]
Product (2x2): [[58, 64], [139, 154]]Schrittweise Umsetzung
- Mathematische Grafikdarstellung und Koordinatenrotationen
- Einfache Punktprodukte der künstlichen neuronalen Netzwerkschicht
- Algorithmenstrukturen und verschachtelte Schleifen verstehen
Häufig gestellte Fragen
Warum führtNumPydie Matrixmultiplikation so viel schneller durch?
NumPyist in C geschrieben und nutzt hochoptimierte BLAS/LAPACK-Bibliotheken. Es nutzt Vektorisierung, CPU-Cache-Optimierungen und parallele Ausführung, was Standard-Python-Schleifen nicht leisten können.
Was ist der „@“-Operator in Python?
Beginnend mitPython 3.5 wurde das „@“-Symbol als dedizierter Infix-Operator für die Matrixmultiplikation eingeführt, sodass Sie „A @ B“ ausführen können, wenn Sie Numpy-Arrays verwenden.