English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Corso di base Python

Controllo dei flussi Python

Funzione in Python

Tipi di dati di Python

Operazioni di file Python

Oggetti e classi Python

Data e ora Python

Conoscenze avanzate Python

Manuale Python

Programma Python per moltiplicare due matrici

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.

Codice sorgente: moltiplicazione di matrici con cicli annidati

# 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

è molto più veloce rispetto al codice sopra (circa 1000 volte).

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.

Enciclopedia di esempi di Python