Jak działa numpy dot w języku Python? Przykład zastosowania

Jak działa numpy dot w języku Python? Przykład zastosowania
„`html

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:

  1. Obliczanie iloczynu skalarnych wektorów w analizie danych.
  2. Operacje macierzowe w uczeniu maszynowym.
  3. 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
KajoDataSpace