Python Výukový program NumPy pro začátečníky
⚡ Chytré shrnutí
NumPy je základem Python knihovna pro numerické výpočty, power matic, lineární algebru a náhodný výběr. Tento tutoriál NumPy vás provede instalací, vytvářením polí, řešením problémů.ping, krájení, statistika a maticová matematika s runnable Python příklady.

V čem je NumPy Python?
nemotorný je open source Python knihovna pro matematické, vědecké, inženýrské a datově-vědecké programování. Je to velmi užitečná knihovna pro matematické a statistické operace v PythonFunguje perfektně s vícerozměrnými poli a násobením matic a snadno se integruje s jazykem C/.C++ a Fortran.
Pro jakýkoli vědecký projekt je NumPy tím pravým nástrojem. Je vytvořen pro N-rozměrná pole, lineární algebru, generování náhodných čísel, Fourierovy transformace a další.
NumPy dává Python prvotřídní podpora pro vícerozměrná pole a matice a také rozsáhlá sada matematických operací, které s nimi pracují. V této příručce si projdeme základní funkce, které potřebujete znát, než přejdeme k tutoriálu na téma 'TensorFlow. "
Proč používat NumPy?
NumPy je paměťově efektivní, takže zvládá velké objemy numerických dat snadněji než čistě NumPy. Python seznamy. Je také velmi vhodný pro násobení matic a jejich řešení.pinga je rychlý, protože těžká práce je delegována na kompilované rutiny jazyka C. Ve skutečnosti knihovny jako TensorFlow, PyTorch a Scikit-learn se ve svém backendu spoléhají na pole NumPy pro maticové výpočty, což z NumPy dělá tichého pracanta pod většinou moderních pracovních postupů v oblasti datové vědy a umělé inteligence.
Jak nainstalovat NumPy
Chcete-li nainstalovat knihovnu NumPy, podívejte se na náš tutoriál Jak nainstalovat TensorFlow. NumPy je standardně nainstalován s Anaconda.
Ve vzácných případech, kdy NumPy není nainstalován, použijte některou z níže uvedených možností.
NumPy můžete nainstalovat pomocí Anaconda:
conda install -c anaconda numpy
- In Jupyter Notebook:
import sys
!conda install --yes --prefix {sys.prefix} numpy
Uživatelé Pipu mohou instalaci nebo upgrade provést jediným příkazem:
pip install --upgrade numpy
Importovat NumPy a zkontrolovat verzi
Příkaz pro import numpy je:
import numpy as np
Výše uvedený řádek přejmenuje jmenný prostor NumPy na npTato zkratka umožňuje nastavit předponu funkcím, metodám a atributům NumPy pomocí np. místo typing numpy.a je to standardní konvence, kterou najdete v celém ekosystému NumPy.
Chcete-li zkontrolovat nainstalovanou verzi NumPy, použijte následující příkaz:
print(np.__version__)
Výstup:
2.1.3
NumPy 2.0 byl vydán v červnu 2024 a je aktuální stabilní hlavní sérií. Pokud váš projekt stále závisí na API 1.x, připněte si ho na numpy<2 ve vašem souboru s požadavky, protože některé starší aliasy, jako například np.float byly odstraněny ve verzi 2.0.
Co je to Python NumPy Array?
Pole NumPy vypadají trochu jako Python seznamy na první pohled, ale chovají se velmi odlišně. Pro čtenáře, kteří s tímto tématem začínají, si vysvětlíme, co je ndarray a proč je důležitý.
Jak název napovídá, pole NumPy je ústřední datovou strukturou knihovny NumPy. Samotný název je zkratkou pro „Numeric“ (číselné pole). Python“ nebo „Číselné Python“ a ndarray je homogenní blok paměti s pevnou velikostí, známým tvarem a datovým typem.
Vytvoření pole NumPy
Nejjednodušší způsob, jak vytvořit pole v NumPy, je začít od Python Seznam.
myPythonList = [1,9,8,3]
převést Python seznam do pole NumPy pomocí np.array.
numpy_array_from_list = np.array(myPythonList)
Zobrazte obsah pole.
numpy_array_from_list
Výstup:
array([1, 9, 8, 3])
V praxi není potřeba deklarovat a Python seznam jako první. Tyto dva kroky lze kombinovat.
a = np.array([1,9,8,3])
POZNÁMKA: Dokumentace NumPy také zmiňuje np.ndarray, Ale np.array je doporučená tovární funkce pro každodenní použití.
Stejným způsobem můžete také vytvořit pole NumPy z n-tice.
Matematický Operana poli
Můžete provádět matematické operace, jako je sčítání, odčítánítracdělení, násobení a dělení v poli. Syntaxe je název pole, následovaný operátorem (+, -, *, /), následovaný operandem. Tyto operace jsou vektorizované, což znamená, že NumPy je aplikuje na každý prvek bez explicitního Python smyčka.
Příklad:
numpy_array_from_list + 10
Výstup:
array([11, 19, 18, 13])
Tato operace přičte 10 ke každému prvku pole NumPy.
Tvar pole
Tvar pole můžete zkontrolovat pomocí shape atribut, ke kterému se přistupuje jeho připojením k názvu pole. Stejným způsobem můžete ověřit typ pomocí dtype.
import numpy as np a = np.array([1,2,3]) print(a.shape) print(a.dtype) (3,) int64
Celé číslo je hodnota bez desetinné čárky. Pokud vytvoříte pole s desetinnými čísly, datový typ se změní na float.
#### Different type b = np.array([1.1,2.0,3.2]) print(b.dtype) float64
2 Dimension Array
Kótu můžete přidat pomocí čárky v závorkách.
Vnitřní n-tice musí být uvnitř vnějších závorek. [].
### 2 dimension c = np.array([(1,2,3), (4,5,6)]) print(c.shape) (2, 3)
3 Dimension Array
Vyšší dimenze lze konstruovat stejným způsobem.
### 3 dimension d = np.array([ [[1, 2,3], [4, 5, 6]], [[7, 8,9], [10, 11, 12]] ]) print(d.shape) (2, 2, 3)
| Objektivní | Code |
|---|---|
| Vytvořte pole | pole([1,2,3]) |
| vytisknout tvar | pole([.]).tvar |
Co je numpy.zeros()?
numpy.zeros() or np.zeros je Python funkce použitá k vytvoření matice vyplněné nulami. numpy.zeros() je užitečné, když potřebujete inicializovat váhy během první iterace v TensorFlow nebo nastavit zástupné vyrovnávací paměti pro jiné statistické úlohy.
Syntaxe funkce numpy.zeros().
numpy.zeros(shape, dtype=float, order='C')
Python numpy.zeros() Parametry
Zde,
- Shape: tvar nulového pole NumPy.
- Dtype: datový typ prvků. Je volitelný a výchozí hodnota je
float64. - ObjednávkaVýchozí nastavení je
C, což je rozvržení podle hlavních řádků používanénumpy.zeros()in Python.
Python numpy.zeros() Příklad
import numpy as np np.zeros((2,2))
Výstup:
array([[0., 0.], [0., 0.]])
Příklad numpy nuly s datovým typem
import numpy as np np.zeros((2,2), dtype=np.int16)
Výstup:
array([[0, 0], [0, 0]], dtype=int16)
Co je numpy.ones()?
funkce np.ones(). vytvoří matici naplněnou jedničkami. numpy.ones() in Python je užitečné při inicializaci vah během první iterace v TensorFlow a pro další statistické úlohy.
Python numpy.ones() Syntaxe
numpy.ones(shape, dtype=float, order='C')
Python numpy.ones() Parametry
Zde,
- Shapetvar np.ones Python Řada.
- Dtype: datový typ prvků. Je volitelný a výchozí hodnota je
float64. - ObjednávkaVýchozí nastavení je
C, což je rozložení podle hlavních řádků.
Python numpy.ones() 2D pole s příkladem datového typu
import numpy as np np.ones((1,2,3), dtype=np.int16)
Výstup:
array([[[1, 1, 1], [1, 1, 1]]], dtype=int16)
funkce numpy.reshape() v Python
Python NumPy Reshape změní tvar pole beze změny jeho dat. Před vložením do modelu může být nutné změnit tvar dat ze širokého na dlouhý formát nebo je přejít z 1D vektoru do 2D matice. np.reshape Funkce to zvládne v jednom volání.
Syntaxe np.reshape()
numpy.reshape(a, newShape, order='C')
Zde,
a: pole, jehož tvar chcete změnit.
newShape: nový požadovaný tvar.
ObjednávkaVýchozí nastavení je C, rozložení podle hlavních řádků.
Příklad NumPy Reshape
import numpy as np e = np.array([(1,2,3), (4,5,6)]) print(e) e.reshape(3,2)
Výstup:
// Before reshape [[1 2 3] [4 5 6]]
//After Reshape array([[1, 2], [3, 4], [5, 6]])
numpy.flatten() in Python
Python NumPy Flatten vrací kopii pole sbaleného do jednoho rozměru. Při práci s neuronovými sítěmi, jako jsou convnets, je často nutné zploštit tenzor obrazu před jeho předáním husté vrstvě. np.flatten() Funkce to zvládne v jednom volání.
Syntaxe np.flatten()
numpy.flatten(order='C')
Zde,
ObjednávkaVýchozí nastavení je C, rozložení podle hlavních řádků.
Příklad NumPy Flatten
e.flatten()
Výstup:
array([1, 2, 3, 4, 5, 6])
Co je numpy.hstack() in Python?
numpy.hstack je Python Funkce používaná k horizontálnímu vrstvení sekvencí vstupních polí do jednoho pole. S hstack(), přidáváte data podél osy sloupců. Je to velmi praktický pomocník v NumPy, když potřebujete sloučit vektory rysů vedle sebe.
Pojďme studovat hstack in Python s příkladem.
Příklad:
## Horizontal Stack import numpy as np f = np.array([1,2,3]) g = np.array([4,5,6]) print('Horizontal Append:', np.hstack((f, g)))
Výstup:
Horizontal Append: [1 2 3 4 5 6]
Co je numpy.vstack() in Python?
numpy.vstack je Python Funkce používaná k vertikálnímu vrstvení sekvencí vstupních polí do jednoho pole. S vstack(), přidáváte data podél osy řádků, což je užitečné, když chcete kombinovat dávky vzorků.
Pojďme si to prostudovat na příkladu.
Příklad:
## Vertical Stack import numpy as np f = np.array([1,2,3]) g = np.array([4,5,6]) print('Vertical Append:', np.vstack((f, g)))
Výstup:
Vertical Append: [[1 2 3] [4 5 6]]
Po studiu NumPy vstack a hstackPodívejme se na příklad, který generuje náhodná čísla v NumPy.
Generovat náhodné Numbers pomocí NumPy
Pro generování náhodných čísel z Gaussova rozdělení použijte:
numpy.random.normal(loc, scale, size)
Zde,
- Místo: průměr. Střed rozdělení.
- Měřítkosměrodatná odchylka.
- Velikost: počet vrácených vzorků.
Příklad:
## Generate random numbers from a normal distribution normal_array = np.random.normal(5, 0.5, 10) print(normal_array) [5.56171852 4.84233558 4.65392767 4.946659 4.85165567 5.61211317 4.46704244 5.22675736 4.49888936 4.68731125]
Pokud je rozdělení znázorněno v grafu, je podobné následujícímu grafu.

Všimněte si, že novější kód stále častěji používá moderní generátorové API, np.random.default_rng(), což je doporučená náhrada za starší verzi np.random.normal volání v NumPy 2.x.
Funkce NumPy Asarray
Jedno asarray() Funkce převádí vstup na pole. Vstupem může být seznam, n-tice, ndarray nebo podobná sekvence.
Syntaxe:
numpy.asarray(data, dtype=None, order=None)
Zde,
datum: data, která chcete převést do pole.
dtype: volitelné. Pokud není zadán, datový typ se odvodí ze vstupních dat.
ObjednávkaVýchozí nastavení je C, rozložení podle hlavních řádků. Druhou možností je F (Fortrasloupcový hlavní ve stylu n).
Příklad:
Uvažujme následující 2D matici se čtyřmi řádky a čtyřmi sloupci, vyplněnou číslem 1.
import numpy as np A = np.matrix(np.ones((4,4)))
Pokud se pokusíte změnit hodnotu v matici pomocí np.array, originál není upraven. Důvodem je, že np.array vytvoří kopii matice.
np.array(A)[2]=2 print(A) [[1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.]]
Matice se nezmění. Použijte asarray když chcete upravit původní pole na místě. Podívejme se, co se stane, když nastavíte třetí řádek na hodnotu 2.
np.asarray(A)[2]=2 print(A)
Code Vysvětlení:
np.asarray(A) převádí matici A do zobrazení pole.
[2] vybere třetí řádek.
Výstup:
[[1. 1. 1. 1.] [1. 1. 1. 1.] [2. 2. 2. 2.] # new value [1. 1. 1. 1.]]
Co je numpy.arange()?
numpy.arange() je vestavěná funkce NumPy, která vrací pole typu ndarray obsahující rovnoměrně rozložené hodnoty v definovaném intervalu. Například pro vytvoření hodnot od 1 do 10 můžete zavolat np.arange() in Python.
Syntaxe:
numpy.arange(start, stop, step, dtype)
Python Parametry NumPy arange:
- Home: začátek intervalu pro
np.arangein Python. - Stop: konec intervalu.
- Krok: mezery mezi hodnotami. Výchozí krok je 1.
- Dtypetyp výstupního pole pro NumPy
arange.
Příklad:
import numpy as np np.arange(1, 11)
Výstup:
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
Příklad:
Chcete-li změnit krok v tomto NumPy arange Například přidejte do závorek třetí číslo. Změní se tím velikost kroku.
import numpy as np np.arange(1, 14, 4)
Výstup:
array([ 1, 5, 9, 13])
Funkce NumPy Linspace
linspace vrací rovnoměrně rozložené vzorky mezi dvěma koncovými body.
Syntaxe:
numpy.linspace(start, stop, num, endpoint)
Zde,
- Home: počáteční hodnota sekvence.
- Stop: koncová hodnota sekvence.
- V: počet vzorků, které se mají vygenerovat. Výchozí hodnota je 50.
- Konečný bod: pokud
True(výchozí),stopje poslední hodnota. PokudFalse,stopnení součástí dodávky.
Příklad:
Například jej lze použít k vytvoření 10 rovnoměrně rozmístěných hodnot od 1 do 5.
import numpy as np np.linspace(1.0, 5.0, num=10)
Výstup:
array([1. , 1.44444444, 1.88888889, 2.33333333, 2.77777778, 3.22222222, 3.66666667, 4.11111111, 4.55555556, 5. ])
Pokud nechcete do intervalu zahrnout poslední číslici, nastavte endpoint na False.
np.linspace(1.0, 5.0, num=5, endpoint=False)
Výstup:
array([1. , 1.8, 2.6, 3.4, 4.2])
Funkce LogSpace NumPy v Python
logspace vrací rovnoměrně rozložená čísla v logaritmickém měřítku. logspace sdílí stejné parametry jako np.linspace.
Syntaxe:
numpy.logspace(start, stop, num, endpoint)
Příklad:
np.logspace(3.0, 4.0, num=4)
Výstup:
array([ 1000. , 2154.43469003, 4641.58883361, 10000. ])
Nakonec, pokud chcete zkontrolovat velikost paměti jednoho prvku v poli, můžete použít itemsize.
x = np.array([1,2,3], dtype=np.complex128) x.itemsize
Výstup:
16
Každý prvek má 16 bajtů.
Indexování a vkládání Python
Rozdělení dat je s NumPy jednoduché. Rozdělíme matici. e, v Python, pro vrácení řádků nebo sloupců použijete hranaté závorky.
Příklad:
## Slice import numpy as np e = np.array([(1,2,3), (4,5,6)]) print(e) [[1 2 3] [4 5 6]]
Nezapomeňte, že v NumPy začíná první index pole na 0.
## First row print('First row:', e[0]) ## Second row print('Second row:', e[1])
Výstup:
First row: [1 2 3] Second row: [4 5 6]
In Python, stejně jako v mnoha jiných jazycích,
- Hodnota před čárkou představuje řádky.
- Hodnota za čárkou představuje sloupce.
- Pokud chcete vybrat sloupec, přidejte
:před indexem sloupce. :znamená, že chcete všechny řádky z vybraného sloupce.
print('Second column:', e[:,1])
Second column: [2 5]
Pro vrácení prvních dvou hodnot druhého řádku použijte : pro výběr všech sloupců až po druhý index.
## Second Row, two values print(e[1, :2]) [4 5]
Statistické funkce v Python
NumPy poskytuje užitečnou sadu statistických funkcí pro nalezení minima, maxima, percentilu, směrodatné odchylky, rozptylu a dalších hodnot z daného pole. Nejběžnější jsou uvedeny níže.
NumPy je dodáván s robustními statistickými pomocníky, které jsou shrnuty v tabulce.
| funkce | nemotorný |
|---|---|
| Min | np.min() |
| Max | np.max() |
| Znamenat | np.mean() |
| Medián | np.medián() |
| Směrodatná odchylka | np.std() |
Uvažte následující pole:
Příklad:
import numpy as np normal_array = np.random.normal(5, 0.5, 10) print(normal_array)
Výstup:
[5.56171852 4.84233558 4.65392767 4.946659 4.85165567 5.61211317 4.46704244 5.22675736 4.49888936 4.68731125]
Příklad statistických funkcí NumPy
### Min print(np.min(normal_array)) ### Max print(np.max(normal_array)) ### Mean print(np.mean(normal_array)) ### Median print(np.median(normal_array)) ### Sd print(np.std(normal_array))
Výstup:
4.467042435266913 5.612113171990201 4.934841002270593 4.846995625786663 0.3875019367395316
Co je to numpy dot produkt?
numpy.dot je výkonná funkce pro výpočet matic. Například skalární součin můžete vypočítat pomocí np.dot. numpy.dot vrací skalární součin a a ba zpracovává 1D i 2D pole. Pro 2D vstupy provádí násobení matic.
Syntaxe:
numpy.dot(x, y, out=None)
parametry
Zde,
x, yvstupní pole. x a y měly by být oba 1D nebo 2D pro np.dot() fungovat jako skalární součin nebo maticový násobek.
out: volitelný výstupní argument použitý k zachycení výsledku. Jinak je vrácena hodnota typu ndarray.
Vrácení zboží
Funkce numpy.dot() vrací skalární součin dvou polí x a yVrací skalár, pokud jsou oba 1D, jinak vrací pole. Pokud out je zadáno, vrátí se toto pole.
Zvedne
Skvrnitý součin v Python vyvolává ValueError pokud poslední rozměr x neodpovídá předposlednímu rozměru y.
Příklad:
## Linear algebra ### Dot product: product of two arrays f = np.array([1,2]) g = np.array([4,5]) ### 1*4+2*5 np.dot(f, g)
Výstup:
14
Násobení matice v Python
NumPy matmul() Funkce vrací součin matic dvou polí. Funguje to takto.
1) Pro 2D pole vrací součin normálních matic.
2) Pro dimenze větší než 2 se součin považuje za vrstvu matic.
3) Jednorozměrné pole je nejprve převedeno na matici a poté je vypočítán jeho součin.
Infix @ operátor, k dispozici od Python 3.5 je zkratka pro matmul a je široce používán v moderním kódu.
Syntaxe:
numpy.matmul(x, y, out=None)
Zde,
x, y: vstupní pole. Skaláry nejsou povoleny.
out: volitelný parametr. Výstup je obvykle uložen v ndarray.
Příklad:
Stejným způsobem můžete vypočítat násobení matic pomocí np.matmul.
### Matmul: matrix product of two arrays h = [[1,2],[3,4]] i = [[5,6],[7,8]] ### 1*5+2*7 = 19 np.matmul(h, i)
Výstup:
array([[19, 22], [43, 50]])
determinant
Pokud potřebujete vypočítat determinant matice, použijte np.linalg.det()NumPy se o rozměry postará za vás.
Příklad:
## Determinant 2*2 matrix ### 5*8-7*6 np.linalg.det(i)
Výstup:
-2.000000000000005
Vysvětlení vysílání NumPy
Vysílání je pravidlo, které umožňuje NumPy provádět aritmetické operace s poli různých tvarů bez kopírování dat. Když přidáte skalár k 1D vektoru nebo 1D vektor k 2D matici, NumPy roztáhne menší operand podél chybějících os, aby se tvary zarovnaly. Tím se zabrání explicitnímu Python smyčky a je jedním z hlavních důvodů, proč se kód NumPy zdá rychlý a stručný.
Dva tvary jsou kompatibilní pro vysílání, když ve srovnání zprava doleva je každá dvojice dimenzí buď stejná, nebo jedna z nich rovná 1. Například matice tvaru (3, 4) vysílání proti řadě tvarů (4,) nebo sloupec tvaru (3, 1)Stejná logika pohání normalizaci ve strojovém učení, kde podhodnocujetetracvektor průměru pro každý prvek z dávky vzorků v jednom řádku. Vysílání je také koncepční model používaný tenzorovými knihovnami, jako je PyTorch, TensorFlow a JAX, takže pravidla, která se zde naučíte, se přenesou přímo do kódu GPU.
Jak NumPy podporuje umělou inteligenci a strojové učení
NumPy je součástí téměř každého moderního Python AI stack. PyTorTenzory ch, tenzory TensorFlow Eager a pole JAX zpřístupňují stejné vysílání, krájení a resha.ping API, které jste se naučili na NumPy ndarrays. Mnoho tutoriálů stále používá předzpracovaná pole NumPy do trénovacích smyček modelu a frameworky je přijímají bez nulové konverze.
Tři konkrétní vzorce ukazují, jak se NumPy propojuje s fungováním umělé inteligence dnes. Zaprvé, datoví inženýři tvarují nezpracované funkce do polí NumPy, než je předají scikit-learn pipeline nebo datovým sadám Hugging Face. Zadruhé, výzkumníci používají NumPy jako základní linii CPU a poté je nahrazují CuPy, který poskytuje téměř identické API, ale běží na GPU NVIDIA prostřednictvím CUDA. Zatřetí, JAX staví na API NumPy a přidává automatickou diferenciaci a kompilaci just-in-time, takže stejný kód, který běží na notebooku, může běžet na TPU v cloudu. Poučení zní, že dovednosti v oblasti polí, které si vybudujete s NumPy, lze přenést do všech hlavních sad nástrojů pro hluboké učení, což z tohoto tutoriálu činí užitečný krok na cestě k vývoji umělé inteligence.
