====== 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]]