Množenje matrike je operacija, ki ustvari eno samo matriko tako, da vzame dve matriki kot vhod in pomnoži vrstice prve matrike v stolpec druge matrike. Upoštevajte, da moramo zagotoviti, da mora biti število vrstic v prvi matriki enako številu stolpcev v drugi matriki.
V Pythonu je postopek množenja matrik z uporabo NumPy znan kot vektorizacija . Glavni cilj vektorizacije je odstraniti ali zmanjšati za zanke ki smo jih izrecno uporabljali. Z zmanjšanjem zank 'for' iz programov omogoča hitrejše računanje. Vgrajeni paket NumPy se uporablja za manipulacijo in obdelavo nizov.
To so tri metode, s katerimi lahko izvedemo množenje matrike numpy.
- Prva je uporaba funkcije multiply(), ki izvede množenje matrike po elementih.
- Druga je uporaba funkcije matmul(), ki izvede matrični produkt dveh nizov.
- Zadnja je uporaba funkcije dot(), ki izvede pikčasti produkt dveh nizov.
Primer 1: Elementno matrično množenje
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
V zgornji kodi
- Uvozili smo numpy z vzdevkom np.
- Ustvarili smo array1 in array2 s funkcijo numpy.array() z dimenzijo 3.
- Ustvarili smo spremenljivko rezultat in dodelili vrnjeno vrednost funkcije np.multiply().
- Posredovali smo matriko array1 in array2 v np.multiply().
- Nazadnje smo poskušali natisniti vrednost rezultata.
V izhodu je bila prikazana tridimenzionalna matrika, katere elementi so rezultat množenja elementov array1 in array2 po elementih.
Izhod:
array([[[ 9, 16, 21], [24, 25, 24], [21, 16, 9]]])
Primer 2: Matrični izdelek
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
Izhod:
array([[[ 30, 24, 18], [ 84, 69, 54], [138, 114, 90]]])
V zgornji kodi
- Uvozili smo numpy z vzdevkom np.
- Ustvarili smo array1 in array2 s funkcijo numpy.array() z dimenzijo 3.
- Ustvarili smo spremenljivko rezultat in dodelili vrnjeno vrednost funkcije np.matmul().
- V np.matmul() smo posredovali matriki array1 in array2.
- Nazadnje smo poskusili natisniti vrednost rezultata.
V izhodu je bila prikazana tridimenzionalna matrika, katere elementi so produkt elementov array1 in array2.
k algoritem najbližjega soseda
Primer 3: pikčasti produkt
To so naslednje specifikacije za numpy.dot:
- Ko sta a in b 1-D (enodimenzionalni) nizi-> Notranji produkt dveh vektorjev (brez kompleksne konjugacije)
- Ko sta a in b 2-D (dvodimenzionalni) nizi -> Matrično množenje
- Ko sta a ali b 0-D (znano tudi kot skalar) -> Pomnožite z uporabo numpy.multiply(a, b) ali a * b.
- Ko je a polje N-D in b je polje 1-D -> Seštej produkt na zadnji osi a in b.
- Ko je a niz N-D in b je niz M-D pod pogojem, da je M>=2 -> Seštevek zmnožka na zadnji osi a in predzadnji osi b:
Tudi pika(a, b)[i,j,k,m] = vsota(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
V zgornji kodi
- Uvozili smo numpy z vzdevkom np.
- Ustvarili smo array1 in array2 s funkcijo numpy.array() z dimenzijo 3.
- Ustvarili smo spremenljivko rezultat in dodelili vrnjeno vrednost funkcije np.dot().
- V np.dot() smo posredovali matriki array1 in array2.
- Nazadnje smo poskušali natisniti vrednost rezultata.
V izhodu je bila prikazana tridimenzionalna matrika, katere elementi so pikčasti produkt obeh elementov array1 in array2.
Izhod:
array([[[[ 30, 24, 18]], [[ 84, 69, 54]], [[138, 114, 90]]]])