logo

Moltiplicazione di matrici NumPy in Python

La moltiplicazione di matrice è un'operazione che produce una singola matrice prendendo due matrici come input e moltiplicando le righe della prima matrice per la colonna della seconda matrice. Nota che dobbiamo assicurarci che il numero di righe nella prima matrice sia uguale al numero di colonne nella seconda matrice.

Moltiplicazione di matrici NumPy in Python

In Python, il processo di moltiplicazione di matrici utilizzando NumPy è noto come vettorizzazione . L'obiettivo principale della vettorizzazione è rimuovere o ridurre il file per i loop che stavamo usando esplicitamente. Riducendo i cicli 'for' dei programmi si ottengono calcoli più rapidi. Il pacchetto integrato NumPy viene utilizzato per la manipolazione e l'elaborazione degli array.

Questi sono tre metodi attraverso i quali possiamo eseguire la moltiplicazione di matrici numpy.

  1. Il primo è l'uso della funzione multiply(), che esegue la moltiplicazione per elemento della matrice.
  2. Il secondo è l'uso della funzione matmul(), che esegue il prodotto matriciale di due array.
  3. L'ultimo è l'uso della funzione punto(), che esegue il prodotto scalare di due array.

Esempio 1: moltiplicazione di matrici per elemento

 import numpy as np array1=np.array([[1,2,3],[4,5,6],[7,8,9]],ndmin=3) array2=np.array([[9,8,7],[6,5,4],[3,2,1]],ndmin=3) result=np.multiply(array1,array2) result 

Nel codice sopra

  • Abbiamo importato Numpy con il nome alias np.
  • Abbiamo creato un array1 e un array2 utilizzando la funzione numpy.array() con dimensione 3.
  • Abbiamo creato un risultato variabile e assegnato il valore restituito dalla funzione np.multiply().
  • Abbiamo passato sia l'array array1 che l'array2 in np.multiply().
  • Infine, abbiamo provato a stampare il valore del risultato.

Nell'output è stata mostrata una matrice tridimensionale i cui elementi sono il risultato della moltiplicazione per elemento degli elementi dell'array1 e dell'array2.

Produzione:

 array([[[ 9, 16, 21], [24, 25, 24], [21, 16, 9]]]) 

Esempio 2: prodotto matrice

 import numpy as np array1=np.array([[1,2,3],[4,5,6],[7,8,9]],ndmin=3) array2=np.array([[9,8,7],[6,5,4],[3,2,1]],ndmin=3) result=np.matmul(array1,array2) result 

Produzione:

 array([[[ 30, 24, 18], [ 84, 69, 54], [138, 114, 90]]]) 

Nel codice sopra

  • Abbiamo importato Numpy con il nome alias np.
  • Abbiamo creato array1 e array2 utilizzando la funzione numpy.array() con dimensione 3.
  • Abbiamo creato un risultato variabile e assegnato il valore restituito dalla funzione np.matmul().
  • Abbiamo passato sia l'array array1 che l'array2 in np.matmul().
  • Infine, abbiamo provato a stampare il valore del risultato.

Nell'output è stata mostrata una matrice tridimensionale i cui elementi sono il prodotto degli elementi dell'array1 e dell'array2.

Esempio 3: prodotto scalare

Queste sono le seguenti specifiche per numpy.dot:

  • Quando sia a che b sono array 1-D (unidimensionali) -> Prodotto interno di due vettori (senza coniugazione complessa)
  • Quando sia a che b sono array 2D (bidimensionali) -> Moltiplicazione di matrici
  • Quando aob è 0-D (noto anche come scalare) -> Moltiplica utilizzando numpy.multiply(a, b) o a * b.
  • Quando a è un array ND e b è un array 1-D -> Somma del prodotto sull'ultimo asse di a e b.
  • Quando a è un array N-D e b è un array M-D a condizione che M>=2 -> Somma del prodotto sull'ultimo asse di a e sul penultimo asse di b:
    Inoltre, punto(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])
 import numpy as np array1=np.array([[1,2,3],[4,5,6],[7,8,9]],ndmin=3) array2=np.array([[9,8,7],[6,5,4],[3,2,1]],ndmin=3) result=np.dot(array1,array2) result 

Nel codice sopra

  • Abbiamo importato Numpy con il nome alias np.
  • Abbiamo creato array1 e array2 utilizzando la funzione numpy.array() con dimensione 3.
  • Abbiamo creato un risultato variabile e assegnato il valore restituito dalla funzione np.dot().
  • Abbiamo passato sia l'array array1 che l'array2 in np.dot().
  • Infine, abbiamo provato a stampare il valore del risultato.

Nell'output è stata mostrata una matrice tridimensionale i cui elementi sono il prodotto scalare degli elementi dell'array1 e dell'array2.

Produzione:

 array([[[[ 30, 24, 18]], [[ 84, 69, 54]], [[138, 114, 90]]]])