Code de multiplication de matrice Python
Effectuez une multiplication matricielle en Python pur sans dépendances. Exécutez notre comparaison des boucles imbriquées et des structures optimisées.
Aperçu
La multiplication matricielle est une opération mathématique fondamentale en algèbre linéaire, en infographie et en apprentissage automatique. Cela consiste à prendre deux matrices et à en produire une troisième en calculant des produits scalaires de lignes et de colonnes.
Pour multiplier la matrice A par la matrice B, le nombre de colonnes de A doit être égal au nombre de lignes de B. La matrice résultante a les dimensions des lignes de A et des colonnes de B.
En Python pur, la multiplication matricielle est implémentée à l'aide de trois boucles imbriquées. Bien que facile à écrire, cette opération O(n³) est lente, c'est pourquoi les data scientists utilisent des moteurs de bibliothèque spécialisés commeNumPyen production.
Sortie de code et d'exécution
Multiplication matricielle Python pur utilisant des boucles imbriquées et la compréhension de listes.
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]]Mise en œuvre étape par étape
- Rendu graphique mathématique et rotations de coordonnées
- Produits ponctuels simples de couche de réseau neuronal artificiel
- Comprendre les structures algorithmiques et les boucles imbriquées
Foire aux questions
PourquoiNumPyeffectue-t-il la multiplication matricielle beaucoup plus rapidement ?
NumPyest écrit en C et utilise les bibliothèques BLAS/LAPACK hautement optimisées. Il tire parti de la vectorisation, des optimisations du cache CPU et de l'exécution parallèle, ce que les boucles Python standard ne peuvent pas faire.
Qu'est-ce que l'opérateur `@` en Python ?
À partir dePython 3.5, le symbole `@` a été introduit en tant qu'opérateur infixe dédié pour la multiplication matricielle, vous permettant d'exécuter `A @ B` lors de l'utilisation de tableaux numpy.
Sujets connexes
Multiplication matricielle et produit scalaire.
Script de calculatrice simple PythonCréez une calculatrice de base en Python. Apprenez à mapper des opérateurs mathématiques, à prendre en compte les flux d'exécution des utilisateurs et à gérer la logique de manière native.