Miről lesz szó
A NumPy a Python adat-stack alja. Minden Pandas, Matplotlib, scikit-learn ezen a könyvtáron áll. 30 perc, és tudni fogod, mi a különbség egy Python lista és egy NumPy tömb között, és mikor melyik a megfelelő.
Mi a NumPy tömb?
Egy fix-méretű, fix-típusú elem-sor a memóriában. A klasszikus Python lista tárolhat bármit (int, str, dict). Egy NumPy tömb csak egy típust — pl. csak float64-et. Ezért 10-100×-szer gyorsabb a számoláson.
Az 5 alapvető művelet
import numpy as np
a = np.array([1, 2, 3, 4, 5])
a.shape # (5,)
a.dtype # int64
a.mean() # 3.0
a + 10 # [11 12 13 14 15] — vektorizált, nem loop
a[a > 2] # [3 4 5] — boolean mask
A vektorizáció varázsa
A klasszikus Python:
result = []
for x in data:
result.append(x * 2 + 1)
NumPy:
result = data * 2 + 1
Ugyanaz, de 100× gyorsabb 1 millió elem fölött. Ne loop-olj NumPy tömbön — művelj rajta egészben.
A 2D tömb: a mátrix
m = np.array([[1, 2, 3], [4, 5, 6]])
m.shape # (2, 3)
m.sum(axis=0) # oszlopok összege: [5, 7, 9]
m.sum(axis=1) # sorok összege: [6, 15]
A axis=0 mindig „oszlop-szinten", a axis=1 mindig „sor-szinten". Ez sokak számára zavaró. Tipp: az axis az a dimenzió, AMIT eltüntetsz az aggregációval.
Random adatgenerálás (tanuláshoz)
np.random.seed(42) # reprodukálható eredmény
sales = np.random.randint(50, 200, size=12) # 12 hónap, 50-200 közti eladás
prices = np.random.normal(10, 2, size=100) # 100 ár, átlag 10, szórás 2
A seed-et MINDIG add meg a kurzusgyakorlatban, hogy a te eredményed és az enyém ugyanaz legyen.
Mi következik
Modul 1 következő leckéjében a Pandas DataFrame-be megyünk mélyen. A NumPy a számok motorja; a Pandas a táblázatos adatok kerete.