Kahden matriisin kertominen yhdellä rivillä käyttämällä Numpya Pythonissa
Matriisikertolasku on operaatio, joka ottaa syötteeksi kaksi matriisia ja tuottaa yhden matriisin kertomalla ensimmäisen matriisin rivit toisen matriisin sarakkeella. Matriisikertolaskussa varmista, että ensimmäisen matriisin sarakkeiden lukumäärän tulee olla yhtä suuri kuin toisen matriisin rivien lukumäärä.
Esimerkki: Kahden koon 3×3 matriisin kertominen toisillaan.
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]]
Menetelmät kahden matriisin kertomiseksi pythonissa
1. Eksplisiittisen sanan käyttäminen silmukoille: Tämä on yksinkertainen tekniikka matriisien kertomiseen, mutta yksi kalliimmista menetelmistä suuremmille syöttötietojoukoille. Tässä käytämme sisäkkäisiä varten silmukoita toistamaan jokaista riviä ja saraketta.
Jos matriisi1 on a n x m matriisi ja matriisi2 on a m x l matriisi.
Toteutus:
Python 3
# 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)> |
Lähtö
[[114, 160, 60], [74, 97, 73], [119, 157, 112]]
Tässä ohjelmassa olemme käyttäneet tuloksen laskemiseen sisäkkäisiä silmukoita, jotka iteroidaan matriisien jokaisen rivin ja sarakkeen läpi, ja lopulta se kerää tulokseen tulon summan.
2. Numpyn käyttö: Kertominen Numpylla tunnetaan myös nimellä vektorointi, jonka pääasiallisena tarkoituksena on vähentää tai poistaa for-silmukoiden eksplisiittistä käyttöä ohjelmassa, jolla laskenta nopeutuu.
Numpy on python-paketin koontiversio taulukoiden käsittelyä ja käsittelyä varten. Suurempiin matriisioperaatioihin käytämme numpy python -pakettia, joka on 1000 kertaa nopeampi kuin iteratiivinen yksi menetelmä.
Lisätietoja Numpysta on osoitteessa Linkki
Toteutus:
Python 3
# 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)> |
Lähtö:
[[ 63 320 83] [ 77 484 102] [ 84 248 117]]
Käyttämällä nuhjuinen
Python 3
# 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)> |
Lähtö:
[[ 63 320 83] [ 77 484 102] [ 84 248 117]]
Yllä olevassa esimerkissä olemme käyttäneet pistetuloa ja matematiikassa pistetulo on algebrallinen operaatio, joka ottaa kaksi samankokoista vektoria ja palauttaa yhden luvun. Tulos lasketaan kertomalla vastaavat merkinnät ja laskemalla yhteen kyseiset tuotteet.