Mnożenie macierzy to operacja, która pobiera dwie macierze jako dane wejściowe i tworzy pojedynczą macierz poprzez mnożenie wierszy pierwszej macierzy przez kolumnę drugiej macierzy. Podczas mnożenia macierzy upewnij się, że liczba kolumn pierwszej macierzy powinna być równa liczbie wierszy drugiej macierzy.
Przykład: Mnożenie przez siebie dwóch macierzy o rozmiarze 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]]>
Metody mnożenia dwóch macierzy w Pythonie
1. Używanie jawnych pętli for: Jest to prosta technika mnożenia macierzy, ale jedna z kosztownych metod w przypadku większych zbiorów danych wejściowych. W tym przypadku używamy metody zagnieżdżonej Do pętle do iteracji każdego wiersza i każdej kolumny.
Jeśli macierz 1 jest a n x m macierz i macierz2 to a m x dł matryca.
Realizacja:
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)> |
>
>Wyjście
jak sortować tablicę w Javie
[[114, 160, 60], [74, 97, 73], [119, 157, 112]]>
W tym programie użyliśmy zagnieżdżonych pętli for do obliczenia wyniku, który będzie iterował po każdym wierszu i kolumnie macierzy, w końcu zgromadzi sumę iloczynu w wyniku.
2. Używanie Numpy'ego: Mnożenie za pomocą Numpy jest również znane jako wektoryzacja, której głównym celem jest ograniczenie lub usunięcie jawnego użycia pętli for w programie, dzięki czemu obliczenia stają się szybsze.
Numpy to kompilacja w pakiecie w Pythonie do przetwarzania i manipulacji tablicami. Do większych operacji na macierzach używamy pakietu numpy Pythona, który jest 1000 razy szybszy niż jedna metoda iteracyjna.
Aby uzyskać szczegółowe informacje na temat Numpy, odwiedź stronę Połączyć
Realizacja:
Python3
# 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)> |
>
>
Wyjście:
[[ 63 320 83] [ 77 484 102] [ 84 248 117]]>
Za pomocą tępy
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)> |
>
sortowanie listy Java
>
Wyjście:
[[ 63 320 83] [ 77 484 102] [ 84 248 117]]>
W powyższym przykładzie użyliśmy iloczynu skalarnego, a w matematyce iloczyn skalarny jest operacją algebraiczną, która przyjmuje dwa wektory o jednakowej wielkości i zwraca jedną liczbę. Wynik oblicza się poprzez pomnożenie odpowiednich wpisów i dodanie tych iloczynów.