La moltiplicazione di matrici è un'operazione che prende due matrici come input e produce una matrice singola moltiplicando le righe della prima matrice per la colonna della seconda matrice. Nella moltiplicazione di matrici assicurati che il numero di colonne della prima matrice dovrebbe essere uguale al numero di righe della seconda matrice.
Esempio: Moltiplicazione tra loro di due matrici di dimensione 3×3.
Input:matrix1 = ([1, 2, 3], [3, 4, 5], [7, 6, 4]) matrix2 = ([5, 2, 6], [5, 6, 7], [7, 6, 4]) Output : [[36 32 32] [70 60 66] [93 74 100]]>
Metodi per moltiplicare due matrici in Python
quanto è grande lo schermo del mio computer
1. Utilizzo di cicli for espliciti: Questa è una tecnica semplice per moltiplicare le matrici ma uno dei metodi costosi per set di dati di input più grandi. In questo, utilizziamo per loop per ripetere ogni riga e ogni colonna.
Se matrice1 è a n×m matrice e matrice2 è a mxl matrice.
Implementazione:
Python3
# input two matrices of size n x m> matrix1>=> [[>12>,>7>,>3>],> >[>4> ,>5>,>6>],> >[>7> ,>8>,>9>]]> matrix2>=> [[>5>,>8>,>1>],> >[>6>,>7>,>3>],> >[>4>,>5>,>9>]]> res>=> [[>0> for> x>in> range>(>3>)]>for> y>in> range>(>3>)]> # explicit for loops> for> i>in> range>(>len>(matrix1)):> >for> j>in> range>(>len>(matrix2[>0>])):> >for> k>in> range>(>len>(matrix2)):> ># resulted matrix> >res[i][j]>+>=> matrix1[i][k]>*> matrix2[k][j]> print> (res)> |
>
>Produzione
[[114, 160, 60], [74, 97, 73], [119, 157, 112]]>
In questo programma, abbiamo utilizzato cicli for nidificati per il calcolo del risultato che itererà attraverso ogni riga e colonna delle matrici, infine accumulerà la somma del prodotto nel risultato.
2. Usando Numpy: La moltiplicazione utilizzando Numpy, nota anche come vettorizzazione, ha lo scopo principale di ridurre o rimuovere l'uso esplicito dei cicli for nel programma, rendendo il calcolo più veloce.
Numpy è una build in un pacchetto in Python per l'elaborazione e la manipolazione di array. Per operazioni su matrici più grandi utilizziamo il pacchetto numpy python che è 1000 volte più veloce di un metodo iterativo.
Per dettagli su Numpy, visitare il Collegamento
Implementazione:
Python3
# We need install numpy in order to import it> import> numpy as np> # input two matrices> mat1>=> ([>1>,>6>,>5>],[>3> ,>4>,>8>],[>2>,>12>,>3>])> mat2>=> ([>3>,>4>,>6>],[>5>,>6>,>7>],[>6>,>56>,>7>])> # This will return dot product> res>=> np.dot(mat1,mat2)> # print resulted matrix> print>(res)> |
>
tabella dei numeri romani 1 100
>
Produzione:
[[ 63 320 83] [ 77 484 102] [ 84 248 117]]>
Utilizzando insensato
Python3
vlc scarica video da youtube
# same result will be obtained when we use @ operator> # as shown below(only in python>3.5)> import> numpy as np> # input two matrices> mat1>=> ([>1>,>6>,>5>],[>3> ,>4>,>8>],[>2>,>12>,>3>])> mat2>=> ([>3>,>4>,>6>],[>5>,>6>,>7>],[>6>,>56>,>7>])> # This will return matrix product of two array> res>=> mat1 @ mat2> # print resulted matrix> print>(res)> |
>
>
Produzione:
[[ 63 320 83] [ 77 484 102] [ 84 248 117]]>
Nell'esempio sopra abbiamo utilizzato il prodotto scalare e in matematica il prodotto scalare è un'operazione algebrica che prende due vettori di uguale dimensione e restituisce un singolo numero. Il risultato viene calcolato moltiplicando le voci corrispondenti e sommando tali prodotti.