logo

NumPy násobení matice v Pythonu

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é.

NumPy násobení matice v Pythonu

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.

  1. První je použití funkce multiply(), která provádí násobení matice po prvcích.
  2. Druhým je použití funkce matmul(), která provádí maticový součin dvou polí.
  3. 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]]]])