====== Knihovna NumPy ====== **NumPy** (zkratka pro *Numerical Python*) je základní knihovna pro vědecké výpočty v jazyce Python. Je to de facto standard pro manipulaci s daty v oblasti datové vědy, strojového učení a AI. ===== Proč používat NumPy? ===== Ačkoliv Python nabízí vestavěné seznamy (lists), pro výpočty v AI jsou nevhodné. NumPy přináší: * **Rychlost:** Operace jsou implementovány v jazycích C a Fortran, což je řádově rychlejší než standardní Python. * **Vektorizace:** Umožňuje provádět operace nad celými poli najednou bez nutnosti psát cykly `for`. * **Paměťová efektivita:** Pole NumPy zabírají v paměti mnohem méně místa než seznamy objektů. ===== Základní objekt: ndarray ===== Srdcem knihovny je objekt **ndarray** (n-dimensional array). Jde o homogenní pole, což znamená, že všechny prvky musí být stejného datového typu (nejčastěji `float` nebo `int`). ==== Ukázka vytvoření polí ==== import numpy as np # Vektor (1D pole) v = np.array([1, 2, 3]) # Matice (2D pole) m = np.array([[1, 2], [3, 4]]) # Tenzor (3D pole - např. 2x2x2) t = np.zeros((2, 2, 2)) ===== Klíčové operace pro AI ===== ==== Broadcasting (Šíření) ==== NumPy dokáže pracovat s poli různých tvarů během aritmetických operací. Například přičtení skaláru ke každému prvku matice proběhne automaticky bez cyklů. ==== Lineární algebra (submodul linalg) ==== Pro potřeby AI obsahuje NumPy specializovaný modul `numpy.linalg`. ^ Funkce ^ Význam ^ | `np.dot(a, b)` | Skalární součin nebo násobení matic. | | `np.transpose(a)` | Transpozice matice. | | `np.linalg.inv(a)` | Výpočet inverzní matice. | | `np.linalg.eig(a)` | Výpočet vlastních čísel a vektorů. | ===== Praktický příklad: Výpočet v neuronu ===== V lineární algebře pro AI jsme zmínili aktivaci neuronu jako $z = w \cdot x + b$. V NumPy to vypadá takto: inputs = np.array([1.0, 2.0, 3.0]) weights = np.array([0.2, 0.8, -0.5]) bias = 2.0 # Výpočet jedním příkazem output = np.dot(inputs, weights) + bias ===== Integrace v ekosystému ===== NumPy tvoří základ, na kterém staví téměř všechny ostatní knihovny pro AI: * **Pandas:** Pro analýzu tabulkových dat. * **Scikit-learn:** Pro klasické algoritmy strojového učení. * **SciPy:** Pro pokročilé vědecké výpočty. * **TensorFlow/PyTorch:** Používají tenzory, které jsou přímo inspirovány architekturou NumPy polí. > **Tip:** Většina metod v AI očekává data ve formátu NumPy polí. Umět efektivně "tvarovat" pole (pomocí `.reshape()`) je jednou z nejdůležitějších dovedností datového inženýra. ==== Související témata ==== * [[it:linearni_algebra_pro_ai|Lineární algebra pro AI]] * [[it:python|Jazyk Python]] * [[it:pandas|Knihovna Pandas]]