Násobení matice je operace, která vytváří jedinou matici tím, že se dvě matice jako vstup a násobí řádky první matice sloupcem druhé matice. Všimněte si, že musíme zajistit, aby se počet řádků v první matici rovnal počtu sloupců v matici druhé.
V Pythonu je proces násobení matic pomocí NumPy známý jako vektorizace . Hlavním cílem vektorizace je odstranit nebo snížit pro smyčky které jsme explicitně používali. Snížením počtu smyček „for“ z programů je výpočet rychlejší. Vestavěný balíček NumPy se používá pro manipulaci a zpracování pole.
Toto jsou tři metody, pomocí kterých můžeme provádět násobení numpy matice.
- První je použití funkce multiply(), která provádí násobení matice po prvcích.
- Druhým je použití funkce matmul(), která provádí maticový součin dvou polí.
- Poslední je použití funkce dot(), která provádí bodový součin dvou polí.
Příklad 1: Násobení matice po prvcích
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
Ve výše uvedeném kódu
- Importovali jsme numpy s aliasem np.
- Vytvořili jsme pole1 a pole2 pomocí funkce numpy.array() s dimenzí 3.
- Vytvořili jsme proměnnou result a přiřadili vrácenou hodnotu funkce np.multiply().
- V np.multiply() jsme předali jak pole pole1, tak pole2.
- Nakonec jsme zkusili vytisknout hodnotu výsledku.
Ve výstupu byla ukázána trojrozměrná matice, jejíž prvky jsou výsledkem násobení prvků pole1 a pole2.
Výstup:
array([[[ 9, 16, 21], [24, 25, 24], [21, 16, 9]]])
Příklad 2: Matricový produkt
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
Výstup:
array([[[ 30, 24, 18], [ 84, 69, 54], [138, 114, 90]]])
Ve výše uvedeném kódu
- Importovali jsme numpy s aliasem np.
- Vytvořili jsme pole1 a pole2 pomocí funkce numpy.array() s dimenzí 3.
- Vytvořili jsme proměnnou result a přiřadili vrácenou hodnotu funkce np.matmul().
- V np.matmul() jsme předali jak pole pole1, tak pole2.
- Nakonec jsme zkusili vytisknout hodnotu výsledku.
Ve výstupu byla ukázána trojrozměrná matice, jejíž prvky jsou součinem prvků pole1 a pole2.
Příklad 3: Bodový produkt
Toto jsou následující specifikace pro numpy.dot:
- Když a i b jsou 1-D (jednorozměrná) pole-> Vnitřní součin dvou vektorů (bez komplexní konjugace)
- Když obě a a b jsou 2-D (dvourozměrná) pole -> Maticové násobení
- Když a nebo b je 0-D (také známé jako skalární) -> Vynásobte pomocí numpy.multiply(a, b) nebo a * b.
- Když a je N-D pole ab je 1-D pole -> Součet součinu na poslední ose aab.
- Když a je pole N-D a b je pole M-D za předpokladu, že M>=2 -> Součet součinu na poslední ose a a předposlední ose b:
Také tečka(a, b)[i,j,k,m] = součet(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
Ve výše uvedeném kódu
- Importovali jsme numpy s aliasem np.
- Vytvořili jsme pole1 a pole2 pomocí funkce numpy.array() s dimenzí 3.
- Vytvořili jsme proměnnou result a přiřadili vrácenou hodnotu funkce np.dot().
- V np.dot() jsme předali jak pole pole1, tak pole2.
- Nakonec jsme zkusili vytisknout hodnotu výsledku.
Ve výstupu byla ukázána trojrozměrná matice, jejíž prvky jsou bodovým součinem prvků pole1 a pole2.
Výstup:
array([[[[ 30, 24, 18]], [[ 84, 69, 54]], [[138, 114, 90]]]])