Codice di moltiplicazione della matrice Python

Esegui la moltiplicazione di matrici in Python puro senza dipendenze. Esegui il nostro confronto tra cicli nidificati e strutture ottimizzate.

Prova nell'editor

Panoramica

La moltiplicazione di matrici è un'operazione matematica fondamentale nell'algebra lineare, nella computer grafica e nell'apprendimento automatico. Si tratta di prendere due matrici e produrne una terza calcolando i prodotti scalari di righe e colonne.

Per moltiplicare la matrice A per la matrice B, il numero di colonne in A deve essere uguale al numero di righe in B. La matrice risultante ha le dimensioni delle righe di A e delle colonne di B.

In Python puro, la moltiplicazione di matrici viene implementata utilizzando tre cicli nidificati. Sebbene sia facile da scrivere, questa operazione O(n³) è lenta, motivo per cui i data scientist utilizzano motori di libreria specializzati comeNumPyin produzione.

Codice e output di esecuzione

Moltiplicazione di matrici Pure Python utilizzando cicli nidificati e comprensione di liste.

matrix_mult.py
Prova nell'editor
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)
Uscita 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]]

Implementazione passo dopo passo

  • Rendering grafico matematico e rotazioni di coordinate
  • Semplici prodotti punto a livello di rete neurale artificiale
  • Comprensione delle strutture algoritmiche e dei cicli nidificati

Domande frequenti

PerchéNumPyesegue la moltiplicazione delle matrici molto più velocemente?

NumPyè scritto in C e utilizza librerie BLAS/LAPACK altamente ottimizzate. Sfrutta la vettorizzazione, le ottimizzazioni della cache della CPU e l'esecuzione parallela, cosa che i loop Python standard non possono fare.

Cos'è l'operatore "@" in Python?

A partire daPython 3.5, il simbolo "@" è stato introdotto come operatore infisso dedicato per la moltiplicazione di matrici, consentendo di eseguire "A @ B" quando si utilizzano array numpy.

Argomenti correlati