logo

Násobenie dvoch matíc v jednom riadku pomocou Numpy v Pythone

Násobenie matice je operácia, ktorá berie ako vstup dve matice a vytvára jednu maticu vynásobením riadkov prvej matice do stĺpca druhej matice. Pri násobení matice sa uistite, že počet stĺpcov prvej matice by sa mal rovnať počtu riadkov druhej matice.

Príklad: Násobenie dvoch matíc navzájom o veľkosti 3×3.



Input:matrix1 = ([1, 2, 3], [3, 4, 5], [7, 6, 4]) matrix2 = ([5, 2, 6], [5, 6, 7], [7, 6, 4]) Output : [[36 32 32] [70 60 66] [93 74 100]]>

Metódy na násobenie dvoch matíc v pythone

1. Použitie explicitných cyklov for: Toto je jednoduchá technika na násobenie matíc, ale jedna z drahých metód pre väčší súbor vstupných údajov. V tomto prípade používame vnorené pre slučky na iteráciu každého riadku a každého stĺpca.

Ak matica1 je a n x m matica a matica2 je a m x l matice.



Implementácia:

Python3






# input two matrices of size n x m> matrix1>=> [[>12>,>7>,>3>],> >[>4> ,>5>,>6>],> >[>7> ,>8>,>9>]]> matrix2>=> [[>5>,>8>,>1>],> >[>6>,>7>,>3>],> >[>4>,>5>,>9>]]> res>=> [[>0> for> x>in> range>(>3>)]>for> y>in> range>(>3>)]> # explicit for loops> for> i>in> range>(>len>(matrix1)):> >for> j>in> range>(>len>(matrix2[>0>])):> >for> k>in> range>(>len>(matrix2)):> ># resulted matrix> >res[i][j]>+>=> matrix1[i][k]>*> matrix2[k][j]> print> (res)>

>

>

Výkon

[[114, 160, 60], [74, 97, 73], [119, 157, 112]]>

V tomto programe sme na výpočet výsledku použili vnorené cykly for, ktoré budú iterovať cez každý riadok a stĺpec matíc, nakoniec nahromadí súčet súčinu vo výsledku.

2. Použitie Numpy: Násobenie pomocou Numpy je tiež známe ako vektorizácia, ktorej hlavným cieľom je znížiť alebo odstrániť explicitné použitie cyklov for v programe, čím sa výpočet zrýchli.
Numpy je zostavený balík v pythone na spracovanie poľa a manipuláciu. Pre väčšie maticové operácie používame balík numpy python, ktorý je 1000-krát rýchlejší ako iteratívna jedna metóda.
Podrobnosti o Numpy nájdete na Odkaz

Implementácia:

Python3

príklad alfa beta prerezávania




# We need install numpy in order to import it> import> numpy as np> # input two matrices> mat1>=> ([>1>,>6>,>5>],[>3> ,>4>,>8>],[>2>,>12>,>3>])> mat2>=> ([>3>,>4>,>6>],[>5>,>6>,>7>],[>6>,>56>,>7>])> # This will return dot product> res>=> np.dot(mat1,mat2)> # print resulted matrix> print>(res)>

>

>

Výkon:

[[ 63 320 83] [ 77 484 102] [ 84 248 117]]>

Použitím nemotorný

Python3




# same result will be obtained when we use @ operator> # as shown below(only in python>3.5)> import> numpy as np> # input two matrices> mat1>=> ([>1>,>6>,>5>],[>3> ,>4>,>8>],[>2>,>12>,>3>])> mat2>=> ([>3>,>4>,>6>],[>5>,>6>,>7>],[>6>,>56>,>7>])> # This will return matrix product of two array> res>=> mat1 @ mat2> # print resulted matrix> print>(res)>

>

náhodný c

>

Výkon:

[[ 63 320 83] [ 77 484 102] [ 84 248 117]]>

Vo vyššie uvedenom príklade sme použili bodový súčin a v matematike je bodový súčin algebraická operácia, ktorá berie dva vektory rovnakej veľkosti a vracia jediné číslo. Výsledok sa vypočíta vynásobením príslušných položiek a sčítaním týchto produktov.