
Jeśli pracujesz z biblioteką NumPy w Pythonie, na pewno prędzej czy później natkniesz się na funkcję numpy.dot(). To jedno z podstawowych narzędzi do mnożenia macierzy, obliczania iloczynu skalarnego czy przekształceń wektorowych. W poniższym artykule wyjaśnię, jak działa numpy.dot(), jakie są jego praktyczne zastosowania oraz pokażę konkretne przykłady kodu.
Czym jest numpy.dot()?
Funkcja numpy.dot() służy do wykonywania iloczynu dwóch tablic NumPy według określonych zasad:
- Gdy oba argumenty to wektory jednowymiarowe (czyli proste listy liczb), zwraca iloczyn skalarny.
- Gdy co najmniej jeden argument jest macierzą, wykonuje standardowe mnożenie macierzowe.
- Dla wielowymiarowych (3D, 4D itd.) tablic NumPy funkcja stosuje reguły algebraiczne dla ich wymiarów.
Jak działa numpy.dot() w praktyce?
Aby lepiej zrozumieć, jak działa numpy.dot(), przyjrzyjmy się kilku praktycznym przykładom.
Iloczyn skalarny dwóch wektorów
Podstawowy przypadek użycia to iloczyn skalarny, czyli suma iloczynów odpowiadających sobie elementów dwóch wektorów:
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
wynik = np.dot(a, b)
print(wynik) # Output: 32
Obliczenia wykonane przez numpy.dot() dla powyższego przykładu:
1×4 + 2×5 + 3×6 = 4 + 10 + 18 = 32
Mnożenie macierzy
W przypadku dwuwymiarowych tablic, numpy.dot() realizuje standardowe mnożenie macierzowe:
import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
wynik = np.dot(A, B)
print(wynik)
Wynik działania to:
[[19 22]
[43 50]]
Obliczenia przebiegają według reguł mnożenia macierzy:
- (1×5 + 2×7), (1×6 + 2×8) → 19, 22
- (3×5 + 4×7), (3×6 + 4×8) → 43, 50
Operacje na macierzach trójwymiarowych
Dla macierzy o większej liczbie wymiarów numpy.dot() stosuje zasady algebraiczne na zgodnych wymiarowo osiach.
import numpy as np
A = np.random.rand(3, 4, 5)
B = np.random.rand(5, 6)
wynik = np.dot(A, B)
print(wynik.shape) # Output: (3, 4, 6)
W powyższym przypadku NumPy dostosowuje wymiarowość, aby wykonać poprawne operacje.
Czym różni się numpy.dot() od numpy.matmul()?
W NumPy istnieje również inna funkcja o nazwie numpy.matmul(), która na pierwszy rzut oka działa podobnie do numpy.dot(), jednak różnice pojawiają się przy pracy z wektorami i macierzami o więcej niż dwóch wymiarach:
| Funkcja | Zastosowanie | Obsługa wymiarów |
|---|---|---|
numpy.dot() |
Iloczyn skalarny, mnożenie macierzy | Działa na wektorach 1D, macierzach 2D i tablicach 3D+ |
numpy.matmul() |
Ścisłe mnożenie macierzy | Nie obsługuje iloczynu skalarnego wektorów 1D |
Kiedy używać numpy.dot()?
numpy.dot() sprawdza się w wielu sytuacjach, w tym:
- Obliczanie iloczynu skalarnych wektorów w analizie danych.
- Operacje macierzowe w uczeniu maszynowym.
- Transformacje 3D w grafice komputerowej.
Jeśli chcesz wykonać wyłącznie mnożenie macierzowe, warto rozważyć użycie numpy.matmul() lub operatora @, który jest bardziej czytelny w nowoczesnym Pythonie.
Podsumowanie
Funkcja numpy.dot() jest wszechstronnym narzędziem do wykonywania obliczeń algebraicznych w NumPy. W zależności od wymiaru wejściowych tablic może zwracać iloczyn skalarny lub wykonywać mnożenie macierzowe. Warto znać jej zasady działania i różnice w stosunku do numpy.matmul(), aby unikać błędów i pisać bardziej czytelny kod.
Inny ciekawy artykuł:
Jak działa numpy cumprod w języku Python? Przykład zastosowania
Opanuj analizę danych w Pythonie z moim kursem!
Opanujesz podstawy programowania w Pythonie, w tym typy danych, zmienne, listy, słowniki, funkcje oraz obsługę błędów. Nauczysz się korzystać z biblioteki pandas do zaawansowanej analizy danych i pracy z różnymi rodzajami danych. Zrozumiesz proces analizy, eksploracji (EDA) i wizualizacji. Tworzenie własnych funkcji przygotuje Cię do rozmów kwalifikacyjnych i rozwiązywania rzeczywistych problemów biznesowych.
Zostań analitykiem danych – dołącz do KajoDataSpace!
Najlepsza ścieżka do zawodu analityka danych. Dostęp do pełnych wersji kursów online z Excela, SQLa, PowerBI, Tableau i Pythona z certyfikatami!
🟨 Ekskluzywana ale pomagająca sobie społeczność.
🟩 Ponad 75 godzin materiałów video.
🟨 Spotkania LIVE co miesiąc.
🟩 Mój osobisty mentoring.

