Množenje matrice je operacija koja proizvodi jednu matricu uzimajući dvije matrice kao ulaz i množeći retke prve matrice u stupac druge matrice. Imajte na umu da moramo osigurati da broj redaka u prvoj matrici bude jednak broju stupaca u drugoj matrici.
U Pythonu je proces množenja matrice pomoću NumPy poznat kao vektorizacija . Glavni cilj vektorizacije je ukloniti ili smanjiti za petlje koje smo eksplicitno koristili. Smanjenjem petlji 'za' iz programa daje brže računanje. Ugrađeni paket NumPy koristi se za manipulaciju i obradu polja.
Ovo su tri metode pomoću kojih možemo izvesti numpy matrično množenje.
- Prvo je korištenje funkcije multiply(), koja izvodi množenje matrice po elementima.
- Drugo je korištenje funkcije matmul(), koja izvodi matrični umnožak dva niza.
- Posljednje je korištenje funkcije dot(), koja izvodi točkasti umnožak dva niza.
Primjer 1: Množenje matrice po elementima
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
U gornjem kodu
- Uvezli smo numpy s alias imenom np.
- Napravili smo array1 i array2 pomoću funkcije numpy.array() s dimenzijom 3.
- Stvorili smo rezultat varijable i dodijelili vraćenu vrijednost funkcije np.multiply().
- Proslijedili smo i niz array1 i array2 u np.multiply().
- Na kraju smo pokušali ispisati vrijednost rezultata.
U izlazu je prikazana trodimenzionalna matrica čiji su elementi rezultat množenja elemenata array1 i array2 po elementima.
Izlaz:
array([[[ 9, 16, 21], [24, 25, 24], [21, 16, 9]]])
Primjer 2: Matrični proizvod
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
Izlaz:
array([[[ 30, 24, 18], [ 84, 69, 54], [138, 114, 90]]])
U gornjem kodu
- Uvezli smo numpy s alias imenom np.
- Napravili smo array1 i array2 pomoću funkcije numpy.array() s dimenzijom 3.
- Stvorili smo rezultat varijable i dodijelili vraćenu vrijednost funkcije np.matmul().
- Proslijedili smo i niz array1 i array2 u np.matmul().
- Na kraju smo pokušali ispisati vrijednost rezultata.
U izlazu je prikazana trodimenzionalna matrica čiji su elementi produkt elemenata array1 i array2.
Primjer 3: Točkasti proizvod
Ovo su sljedeće specifikacije za numpy.dot:
- Kada su i a i b 1-D (jednodimenzionalni) nizovi-> Unutarnji produkt dva vektora (bez kompleksne konjugacije)
- Kada su i a i b 2-D (dvodimenzionalni) nizovi -> Matrično množenje
- Kada je a ili b 0-D (također poznato kao skalar) -> Množi pomoću numpy.multiply(a, b) ili a * b.
- Kada je a N-D niz, a b je 1-D niz -> zbroji produkt preko zadnje osi a i b.
- Kada je a N-D niz, a b je M-D niz pod uvjetom da je M>=2 -> Zbrojni umnožak preko zadnje osi a i pretposljednje osi b:
Također, točka(a, b)[i,j,k,m] = zbroj(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
U gornjem kodu
javascript prozor.otvori
- Uvezli smo numpy s alias imenom np.
- Napravili smo array1 i array2 pomoću funkcije numpy.array() s dimenzijom 3.
- Stvorili smo rezultat varijable i dodijelili vraćenu vrijednost funkcije np.dot().
- Proslijedili smo i niz array1 i array2 u np.dot().
- Na kraju smo pokušali ispisati vrijednost rezultata.
U izlazu je prikazana trodimenzionalna matrica čiji su elementi točkasti umnožak elemenata array1 i array2.
Izlaz:
array([[[[ 30, 24, 18]], [[ 84, 69, 54]], [[138, 114, 90]]]])