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.

Essayez dans l'éditeur

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