Vermenigvuldiging van de matrix is een bewerking die een enkele matrix produceert door twee matrices als invoer te nemen en rijen van de eerste matrix te vermenigvuldigen met de kolom van de tweede matrix. Merk op dat we ervoor moeten zorgen dat het aantal rijen in de eerste matrix gelijk moet zijn aan het aantal kolommen in de tweede matrix.
In Python staat het proces van matrixvermenigvuldiging met behulp van NumPy bekend als vectorisatie . Het belangrijkste doel van vectorisering is het verwijderen of verminderen van de voor lussen die we expliciet gebruikten. Door de 'for'-loops van programma's te verminderen, worden de berekeningen sneller uitgevoerd. Het ingebouwde pakket NumPy wordt gebruikt voor manipulatie en array-verwerking.
Dit zijn drie methoden waarmee we numpy-matrixvermenigvuldiging kunnen uitvoeren.
- Ten eerste is er het gebruik van de functie multiply(), die elementaire vermenigvuldiging van de matrix uitvoert.
- Ten tweede is er het gebruik van de functie matmul(), die het matrixproduct van twee arrays uitvoert.
- Als laatste is er het gebruik van de functie dot(), die het puntproduct van twee arrays uitvoert.
Voorbeeld 1: Elementgewijze matrixvermenigvuldiging
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
In de bovenstaande code
- We hebben numpy geïmporteerd met aliasnaam np.
- We hebben een array1 en array2 gemaakt met behulp van de functie numpy.array() met dimensie 3.
- We hebben een variabel resultaat gemaakt en de geretourneerde waarde van de functie np.multiply() toegewezen.
- We hebben zowel de array array1 als array2 doorgegeven in np.multiply().
- Ten slotte hebben we geprobeerd de waarde van het resultaat af te drukken.
In de uitvoer is een driedimensionale matrix weergegeven waarvan de elementen het resultaat zijn van de elementgewijze vermenigvuldiging van zowel array1- als array2-elementen.
Uitgang:
array([[[ 9, 16, 21], [24, 25, 24], [21, 16, 9]]])
Voorbeeld 2: Matrixproduct
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
Uitgang:
array([[[ 30, 24, 18], [ 84, 69, 54], [138, 114, 90]]])
In de bovenstaande code
- We hebben numpy geïmporteerd met aliasnaam np.
- We hebben array1 en array2 gemaakt met de functie numpy.array() met dimensie 3.
- We hebben een variabel resultaat gemaakt en de geretourneerde waarde van de functie np.matmul() toegewezen.
- We hebben zowel de array array1 als array2 in np.matmul() doorgegeven.
- Ten slotte hebben we geprobeerd de waarde van het resultaat af te drukken.
In de uitvoer is een driedimensionale matrix weergegeven waarvan de elementen het product zijn van zowel array1- als array2-elementen.
Voorbeeld 3: Puntproduct
Dit zijn de volgende specificaties voor numpy.dot:
- Wanneer zowel a als b 1-D (eendimensionale) arrays zijn -> Inwendig product van twee vectoren (zonder complexe conjugatie)
- Wanneer zowel a als b 2D (tweedimensionale) arrays zijn -> Matrixvermenigvuldiging
- Wanneer a of b 0-D is (ook wel scalair genoemd) -> Vermenigvuldig met numpy.multiply(a, b) of a * b.
- Wanneer a een N-D-array is en b een 1-D-array is -> Somproduct over de laatste as van a en b.
- Wanneer a een N-D-array is en b een M-D-array is, op voorwaarde dat M>=2 -> Somproduct over de laatste as van a en de voorlaatste as van b:
Ook punt(a, b)[i,j,k,m] = som(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
In de bovenstaande code
- We hebben numpy geïmporteerd met aliasnaam np.
- We hebben array1 en array2 gemaakt met de functie numpy.array() met dimensie 3.
- We hebben een variabel resultaat gemaakt en de geretourneerde waarde van de functie np.dot() toegewezen.
- We hebben zowel de array array1 als array2 in np.dot() doorgegeven.
- Ten slotte hebben we geprobeerd de waarde van het resultaat af te drukken.
In de uitvoer is een driedimensionale matrix weergegeven waarvan de elementen het puntproduct zijn van zowel array1- als array2-elementen.
Uitgang:
array([[[[ 30, 24, 18]], [[ 84, 69, 54]], [[138, 114, 90]]]])