Mnożenie macierzy
Lekcja 18 z 18 w kursie Podstawy NumPy w Coddy.
Mnożenie macierzy to seria iloczynów skalarnych, których wynikiem jest nowa macierz.
Jak to działa?
Załóżmy, że mamy dwie macierze: A o kształcie (3, 2) i B o kształcie (2, 4).
W wyniku mnożenia A i B otrzymamy nową macierz o kształcie (3, 4).
Wewnętrzne wymiary macierzy muszą być zgodne (w tym przypadku zarówno A, jak i B mają wymiar 2 -> (3,2)(2,4)=(3,4))
mnożenie A*b to
- iloczyn skalarny 1. wiersza macierzy A i 1. kolumny macierzy B daje element na pozycji [1, 1]
- iloczyn skalarny 1. wiersza macierzy A i 2. kolumny macierzy B daje element na pozycji [1, 2]
- ...
- ...
- iloczyn skalarny 2. wiersza macierzy A i 1. kolumny macierzy B daje element na pozycji [2, 1]
- iloczyn skalarny 2. wiersza macierzy A i 2. kolumny macierzy B daje element na pozycji [2, 2]
- ...
- ...
- itd.
Przykład:
Macierz A:
| 1 | 2 |
| 3 | 4 |
| 5 | 6 |
Macierz B:
| 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 |
Wynik:
| 1*7 + 2*11 | 1*8 + 2*12 | 1*9 + 2*13 | 1*10 + 2*14 |
| 3*7 + 4*11 | 3*8 + 4*12 | 3*9 + 4*13 | 3*10 + 4*14 |
| 5*7 + 6*11 | 5*8 + 6*12 | 5*9 + 6*13 | 5*10 + 6*14 |
A po obliczeniu:
| 29 | 32 | 35 | 38 |
| 65 | 72 | 79 | 86 |
| 101 | 112 | 123 | 134 |
Jak zrobić to w NumPy?
Są 3 sposoby mnożenia macierzy:
np.matmul(matrix1, matrix2)matrix1.dot(matrix2)A @ B
import numpy as np
A = np.array([[1, 2], [3, 4], [5, 6]])
B = np.array([[7, 8, 9, 10], [11, 12, 13, 14]])
np.matmul(A,B)Wynik:
array([[ 29, 32, 35, 38],
[ 65, 72, 79, 86],
[101, 112, 123, 134]])Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wyzwanie
Utwórz funkcję o nazwie matrix_master, która przyjmuje trzy listy Pythona i zwraca iloczyn macierzy dwóch pierwszych list, a następnie wykonuje iloczyn skalarny wyniku z ostatnią listą
Spróbuj swoich sił
import numpy as np
def matrix_master(lst1, lst2, lst3):
# complete
Wszystkie lekcje w sekcji Podstawy NumPy
2Tworzenie tablic wielowymiarowych
Wyższy wymiarZrozumienie kształtówWypełnianie stałymi wartościamiTypy NumPyZakresZmiana kształtuPoćwicz samodzielnie: Kompilator Python online