English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Enciclopedia di esempi di Python
In questo esempio, impareremo a moltiplicare le matrici in due modi diversi: con cicli annidati e comprensione di liste annidate
Per comprendere questo esempio, dovresti conoscere il seguenteProgrammazione PythonArgomento:
In Python, possiamo implementare la matrice come elenco annidato (elenco all'interno di un elenco).
Possiamo considerare ogni elemento come una riga della matrice.
Ad esempio, X = [[1, 2], [4, 5], [3, 6]] rappresenta una matrice 3x2.
La prima riga può essere scelta come X[0]. E, il primo elemento della prima riga e della prima colonna può essere scelto come X[0][0].
La moltiplicazione tra due matrici X e Y è definita solo quando il numero di colonne di X è uguale al numero di righe di Y.
Se X è una matrice n x m e Y è una matrice m x l, allora XY è definito e le sue dimensioni sono n x l (ma YX non è definito). Ecco alcuni metodi per implementare la moltiplicazione di matrici in Python.
# Programma utilizza cicli annidati per moltiplicare due matrici # 3x3 matrix # Matrice 3x3 X = [[12,7,3], [4,5,6], [7,8,9]] # Matrice 3x4 Y = [[5,8,1,2], [6,7,3,0], [4,5,9,1]] # Matrice 3x3 result = [[0,0,0,0], [0,0,0,0], [0,0,0,0]] # Esplora le righe di X for i in range(len(X)): # Esplora le colonne di Y for j in range(len(Y[0])): # Esplora le righe di Y for k in range(len(Y)): 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:
result[i][j] += X[i][k] * Y[k][j]
Risultato di output [114, 160, 60, 27] [74, 97, 73, 14]
[119, 157, 112, 23]
In questo programma, usiamo un ciclo for annidato per percorrere ogni riga e ogni colonna. Sommiamo i prodotti nel risultato.
Questa tecnica è semplice, ma aumentando il grado della matrice, la quantità di calcolo aumenta enormemente.Per operazioni su matrici di grandi dimensioni, raccomandiamo di utilizzare pacchetti ottimizzati, comeNumPy
Esempio # Programma per moltiplicare due matrici utilizzando la comprensione di lista # Matrice 3x3 X = [[12,7,3], [4,5,6], [7,8,9]] # Matrice 3x4 Y = [[5,8,1,2], [6,7,3,0], [4,5,9,1]] # Il risultato è 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:
Il print(r)
L'output di questo programma è lo stesso dell'altro. Per comprendere il codice sopra, dobbiamo prima comprendere la funzione integrata zip() e l'operatore * per decomprimere la lista di parametri.