Ce face np.dot()
Pentru doi vectori 1D de aceeași lungime, np.dot(a, b) înmulțește elementele de pe aceleași poziții și adună rezultatele (produsul scalar): a[0]*b[0] + a[1]*b[1] + .... Un exemplu practic: totalul unui bon din cantități și prețuri.
Pentru o matrice și un vector sau pentru două matrice 2D, np.dot() face înmulțirea de matrice: numărul de coloane al primei trebuie să fie egal cu numărul de rânduri al celei de-a doua. Pentru matrice, codul nou folosește de obicei operatorul @ (vezi np.matmul), care se citește mai ușor; pe tablouri cu mai mult de 2 dimensiuni, dot și @ se comportă diferit.
Parametri
| Parametru | Descriere |
|---|---|
a, b |
Vectori sau matrice cu forme compatibile. Dacă unul este scalar, rezultatul este o înmulțire obișnuită. |
out |
Tablou în care se scrie rezultatul (opțional). |
Ce returnează
Un scalar pentru doi vectori 1D; un tablou pentru matrice.
Exemple
Exemplul 1: Totalul unui bon
import numpy as np
cantitati = np.array([2, 1, 3]) # pâine, lapte, ouă (cutii)
preturi = np.array([4.5, 7.0, 12.0]) # lei
print("Total:", np.dot(cantitati, preturi), "lei")
print("La fel:", cantitati.dot(preturi))
Rezultat
Total: 52.0 lei
La fel: 52.0
Exemplul 2: Matrice înmulțită cu un vector
Fiecare rând este un magazin cu cantitățile vândute; rezultatul este încasarea fiecărui magazin.
import numpy as np
vandut = np.array([
[10, 5, 2], # Iași
[8, 12, 4], # Cluj
])
preturi = np.array([4.5, 7.0, 12.0])
print(np.dot(vandut, preturi))
Rezultat
[104. 168.]
Exemplul 3: Produsul a două matrice
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
print(np.dot(a, b))
try:
np.dot(np.array([1, 2, 3]), np.array([1, 2]))
except ValueError as e:
print("Eroare:", e)
Rezultat
[[19 22]
[43 50]]
Eroare: shapes (3,) and (2,) not aligned: 3 (dim 0) != 2 (dim 0)
Greșeli frecvente
- Folosești
*în loc denp.dot:a * bînmulțește element cu element și nu adună. Pentru produs scalar sau matriceal foloseștenp.dotsau@. - Înmulțești matrice cu forme incompatibile (de exemplu (2, 3) cu (2, 3)) și primești
ValueError: shapes ... not aligned. Verificăa.shapeșib.shape; poate ai nevoie deb.T.
Comenzi înrudite
np.matmul() și operatorul @: Înmulțirea de matrice cu np.matmul sau operatorul @; diferența față de *, care înmulțește element cu element.Operații element cu element și ufunc-uri: Operatorii aritmetici și funcțiile matematice NumPy (ufunc-uri) se aplică pe fiecare element, fără bucle.np.linalg.solve(): Rezolvă un sistem de ecuații liniare A @ x = b și returnează soluția x; verifici rezultatul cu np.allclose.ndarray.shape: Află forma unui tablou (rânduri, coloane), numărul de dimensiuni și numărul total de elemente.