Python NumPy oktatóanyag kezdőknek
⚡ Okos összefoglaló
A NumPy az alapvető Python numerikus számítástechnikai könyvtár, tömbök, mátrixok, lineáris algebra és véletlenszerű mintavételezés kezelése. Ez a NumPy oktatóanyag végigvezeti a telepítésen, tömbök létrehozásán, átméretezésén és egyéb műveleteken.ping, szeletelés, statisztika és mátrixmatematika futtatható programmal Python példák.

Miben található a NumPy? Python?
numpy nyílt forráskódú Python matematikai, tudományos, mérnöki és adattudományi programozáshoz használt könyvtár. Ez egy nagyon hasznos könyvtár matematikai és statisztikai műveletekhez a PythonTökéletesen működik többdimenziós tömbökkel és mátrixszorzással, és könnyen integrálható a C/C++ és a Fortran.
Bármely tudományos projekthez a NumPy a megfelelő eszköz. N-dimenziós tömbök, lineáris algebra, véletlenszám-generálás, Fourier-transzformációk és egyebek kezelésére készült.
NumPy ad Python első osztályú támogatás többdimenziós tömbökhöz és mátrixokhoz, valamint számos matematikai művelet, amelyek ezeken dolgoznak. Ebben az útmutatóban áttekintjük azokat a lényeges függvényeket, amelyeket ismernie kell, mielőtt továbblépnénk a „” című oktatóanyagra.TensorFlow. "
Miért használja a NumPy-t?
A NumPy memóriahatékony, így nagy mennyiségű numerikus adatot könnyebben képes kezelni, mint a tiszta Python listák. Mátrixok szorzásához és újraosztásához is nagyon kényelmes.ping, és gyors, mert a nehéz munkát lefordított C rutinokra delegálják. Valójában olyan könyvtárak, mint a TensorFlow, a PyTorA ch és a Scikit-learn a NumPy tömböket használja a mátrixmatematika elvégzéséhez a háttérrendszerében, ami a NumPy-t a legtöbb modern adattudományi és mesterséges intelligencia munkafolyamat csendes munkahordozójává teszi.
A NumPy telepítése
A NumPy könyvtár telepítéséhez tekintse meg az oktatóanyagunkat A TensorFlow telepítése. A NumPy alapértelmezés szerint telepítve van az Anacondával.
Abban a ritka esetben, ha a NumPy nincs telepítve, használja az alábbi lehetőségek bármelyikét.
A NumPy-t az Anaconda segítségével telepítheti:
conda install -c anaconda numpy
- In Jupyter Notebook:
import sys
!conda install --yes --prefix {sys.prefix} numpy
A Pip felhasználók egyetlen paranccsal telepíthetnek vagy frissíthetnek:
pip install --upgrade numpy
Importálja a NumPy-t és ellenőrizze a verziót
A numpy importálásának parancsa a következő:
import numpy as np
A fenti sor átnevezi a NumPy névteret a következőre: npEz a gyorsbillentyű lehetővé teszi, hogy a NumPy függvények, metódusok és attribútumok elé a következőt illessze be: np. helyett typing numpy., és ez a NumPy ökoszisztémában megtalálható szabványos konvenció.
A NumPy telepített verziójának ellenőrzéséhez használja az alábbi parancsot:
print(np.__version__)
output:
2.1.3
A NumPy 2.0 2024 júniusában jelent meg, és ez a jelenlegi stabil fő sorozat. Ha a projekted továbbra is az 1.x API-tól függ, akkor rögzítsd a következőhöz: numpy<2 a követelményfájlban, mivel néhány korábbi álnév, mint például np.float eltávolításra kerültek a 2.0-s verzióban.
Mi az a Python NumPy Array?
A NumPy tömbök kicsit úgy néznek ki, mint Python első pillantásra listák, de nagyon eltérően viselkednek. Azoknak az olvasóknak, akik még nem ismerik a témát, tisztázzuk, mi is az az ndarray, és miért fontos.
Ahogy a neve is sugallja, a NumPy tömb a NumPy könyvtár központi adatszerkezete. Maga a név a „Numeric” (Numerikus) rövidítése. Python” vagy „Numerical Python”, és az ndarray egy homogén, fix méretű memóriablokk, ismert alakkal és adattípussal.
NumPy tömb létrehozása
A NumPy-ban a tömb létrehozásának legegyszerűbb módja, ha egy Python Lista.
myPythonList = [1,9,8,3]
konvertálása Python listát NumPy tömbbe a következő használatával: np.array.
numpy_array_from_list = np.array(myPythonList)
Jelenítse meg a tömb tartalmát.
numpy_array_from_list
output:
array([1, 9, 8, 3])
A gyakorlatban nem kell deklarálni a Python lista első. A két lépés kombinálható.
a = np.array([1,9,8,3])
JEGYZET: A NumPy dokumentációja is említi np.ndarray, de np.array a mindennapi használatra ajánlott gyári funkció.
Ugyanígy létrehozhatsz egy NumPy tömböt egy tuple-ből is.
Matematikai Operaegy tömbön
Matematikai műveleteket végezhet, például összeadást, részfelosztásttracosztás, szorzás és osztás egy tömbön. A szintaxis a tömb neve, majd az operátor (+, -, *, /), majd az operandus következik. Ezek a műveletek vektorizáltak, ami azt jelenti, hogy a NumPy minden elemre alkalmazza őket explicit Python hurok.
Példa:
numpy_array_from_list + 10
output:
array([11, 19, 18, 13])
Ez a művelet 10-et ad hozzá a NumPy tömb minden eleméhez.
A tömb alakja
Egy tömb alakját a következővel ellenőrizheted: shape attribútum, amelyhez a tömb nevéhez hozzáfűzéssel lehet hozzáférni. Ugyanígy ellenőrizheti a típust a következővel: dtype.
import numpy as np a = np.array([1,2,3]) print(a.shape) print(a.dtype) (3,) int64
Az egész szám egy tizedesvessző nélküli érték. Ha tizedesjegyeket tartalmazó tömböt hozol létre, a dtype (dtípus) lebegőpontosra változik.
#### Different type b = np.array([1.1,2.0,3.2]) print(b.dtype) float64
2 dimenziós tömb
A zárójelben lévő vesszővel hozzáadhat dimenziót.
Megjegyzendő, hogy a belső tuple-eknek a külső zárójeleken belül kell lenniük. [].
### 2 dimension c = np.array([(1,2,3), (4,5,6)]) print(c.shape) (2, 3)
3 dimenziós tömb
A magasabb méretek ugyanígy konstruálhatók.
### 3 dimension d = np.array([ [[1, 2,3], [4, 5, 6]], [[7, 8,9], [10, 11, 12]] ]) print(d.shape) (2, 2, 3)
| Objektív | Code |
|---|---|
| Hozzon létre tömböt | tömb([1,2,3]) |
| nyomtassa ki az alakzatot | tömb([.]).alak |
Mi az a numpy.zeros()?
numpy.zeros() or np.zeros egy olyan Python nullákkal kitöltött mátrix létrehozására használt függvény. numpy.zeros() akkor hasznos, ha a TensorFlow első iterációja során inicializálni kell a súlyokat, vagy helyőrző puffereket kell beállítani más statisztikai feladatokhoz.
numpy.zeros() függvény Szintaxis
numpy.zeros(shape, dtype=float, order='C')
Python numpy.zeros() Paraméterek
Itt,
- Alak: a NumPy nulla tömb alakja.
- Dtípus: az elemek adattípusa. Opcionális, az alapértelmezett érték pedig
float64. - Megrendelés: az alapértelmezett érték
C, amely a által használt sor-fő elrendezésnumpy.zeros()in Python.
Python numpy.zeros() Példa
import numpy as np np.zeros((2,2))
output:
array([[0., 0.], [0., 0.]])
Példa a numpy nullára adattípussal
import numpy as np np.zeros((2,2), dtype=np.int16)
output:
array([[0, 0], [0, 0]], dtype=int16)
Mi az a numpy.ones()?
np.ones() függvény egyesekkel töltött mátrixot hoz létre. numpy.ones() in Python hasznos a súlyok inicializálásakor a TensorFlow első iterációja során, valamint más statisztikai feladatokhoz.
Python numpy.ones() Szintaxis
numpy.ones(shape, dtype=float, order='C')
Python numpy.ones() Paraméterek
Itt,
- Alak: az np.ones alakja Python Sor.
- Dtípus: az elemek adattípusa. Opcionális, az alapértelmezett érték pedig
float64. - Megrendelés: az alapértelmezett érték
C, ami a sor-fő elrendezés.
Python numpy.ones() 2D tömb adattípus példával
import numpy as np np.ones((1,2,3), dtype=np.int16)
output:
array([[[1, 1, 1], [1, 1, 1]]], dtype=int16)
numpy.reshape() függvény be Python
Python NumPy Reshape megváltoztatja egy tömb alakját az adatainak megváltoztatása nélkül. Előfordulhat, hogy az adatokat széles formátumról hosszú formátumra kell átalakítani, vagy 1D vektorról 2D mátrixra kell váltani, mielőtt betáplálná egy modellbe. A np.reshape függvény egyetlen hívásban kezeli ezt.
Az np.reshape() szintaxisa
numpy.reshape(a, newShape, order='C')
Itt,
a: az átformálni kívánt tömb.
newShape: az új kívánt alakzat.
Megrendelés: az alapértelmezett érték C, a sor-szak elrendezés.
Példa a NumPy átformálására
import numpy as np e = np.array([(1,2,3), (4,5,6)]) print(e) e.reshape(3,2)
output:
// Before reshape [[1 2 3] [4 5 6]]
//After Reshape array([[1, 2], [3, 4], [5, 6]])
numpy.flatten() in Python
Python NumPy Flatten visszaadja a tömb egy dimenzióba omlott másolatát. Amikor neurális hálózatokkal, például convnetekkel dolgozunk, gyakran szükség van egy képtenzor lapítására, mielőtt átadnánk egy sűrű rétegnek. np.flatten() A függvény ezt egyetlen hívásban kezeli.
Az np.flatten() szintaxisa
numpy.flatten(order='C')
Itt,
Megrendelés: az alapértelmezett érték C, a sor-szak elrendezés.
Példa a NumPy Flattenre
e.flatten()
output:
array([1, 2, 3, 4, 5, 6])
Mi az a numpy.hstack() Python?
numpy.hstack egy olyan Python függvény, amely bemeneti tömbök sorozatainak vízszintes egymásra rakására szolgál egyetlen tömbbe. hstack(), az oszlop tengelye mentén fűzöd hozzá az adatokat. Ez egy nagyon praktikus segítő a NumPy-ban, amikor jellemzővektorokat kell egymás mellé egyesíteni.
Tanuljunk hstack in Python egy példával.
Példa:
## 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)))
output:
Horizontal Append: [1 2 3 4 5 6]
Mi az a numpy.vstack() Python?
numpy.vstack egy olyan Python függvény, amely bemeneti tömbök sorozatainak függőleges egymásra rakására szolgál egyetlen tömbbe. vstack(), az adatokat a sor tengelye mentén fűzi hozzá, ami akkor hasznos, ha több minta-köteget szeretne egyesíteni.
Vizsgáljuk meg egy példával.
Példa:
## 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)))
output:
Vertical Append: [[1 2 3] [4 5 6]]
Miután tanulmányoztam a NumPy-t vstack és a hstack, nézzünk egy példát, amely véletlenszámokat generál a NumPy-ban.
Véletlenszerű generálás Numbers a NumPy használatával
Gauss-eloszlásból véletlenszámok generálásához használja a következőt:
numpy.random.normal(loc, scale, size)
Itt,
- Loc: az átlag. Az eloszlás középpontja.
- Skála: a szórás.
- Méret: a visszaküldött minták száma.
Példa:
## 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]
Ha ábrázoljuk, az eloszlás hasonló a következő diagramhoz.

Vegye figyelembe, hogy az újabb kód egyre inkább a modern generátor API-t használja, np.random.default_rng(), amely a régi verzió ajánlott helyettesítője np.random.normal hívások a NumPy 2.x-ben.
NumPy Asarray függvény
Az asarray() A függvény egy bemenetet tömbbé alakít. A bemenet lehet lista, tuple, ndarray vagy hasonló sorozat.
Syntax:
numpy.asarray(data, dtype=None, order=None)
Itt,
Az információk szétdarabolódása: tömbbé konvertálni kívánt adatok.
dtype: opcionális. Ha nincs megadva, az adattípus a bemeneti adatokból lesz kikövetkeztetve.
Megrendelés: az alapértelmezett érték C, a sor-fő elrendezés. A másik lehetőség a következő: F (Fortran-stílusú fő oszlop).
Példa:
Tekintsük a következő négy soros és négy oszlopos 2D mátrixot, amelyet 1-gyel töltünk ki.
import numpy as np A = np.matrix(np.ones((4,4)))
Ha megpróbálsz megváltoztatni egy értéket a mátrixban a következőképpen: np.array, az eredetit nem módosítják. Ennek az az oka, hogy np.array másolatot készít a mátrixról.
np.array(A)[2]=2 print(A) [[1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.]]
A mátrix változatlan marad. Használat asarray amikor a helyén szeretnéd módosítani az eredeti tömböt. Nézzük meg, mi történik, ha a harmadik sort 2-re állítod.
np.asarray(A)[2]=2 print(A)
Code Magyarázat:
np.asarray(A) átalakítja a mátrixot A egy tömbnézetbe.
[2] kijelöli a harmadik sort.
output:
[[1. 1. 1. 1.] [1. 1. 1. 1.] [2. 2. 2. 2.] # new value [1. 1. 1. 1.]]
Mi az a numpy.arange()?
numpy.arange() egy beépített NumPy függvény, amely egy ndarray-t ad vissza, amely egyenletesen elosztott értékeket tartalmaz egy meghatározott intervallumon belül. Például 1-től 10-ig terjedő értékek létrehozásához meghívhatja a np.arange() in Python.
Syntax:
numpy.arange(start, stop, step, dtype)
Python NumPy sorparaméterek:
- Rajt: az intervallum kezdete a következőhöz:
np.arangein Python. - megáll: az intervallum vége.
- Lépés: értékek közötti térköz. Az alapértelmezett lépésköz 1.
- Dtípus: a NumPy kimeneti tömbjének típusa
arange.
Példa:
import numpy as np np.arange(1, 11)
output:
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
Példa:
A lépés megváltoztatásához ebben a NumPy-ban arange Például adjunk hozzá egy harmadik számot a zárójelekhez. Ez megváltoztatja a lépésközt.
import numpy as np np.arange(1, 14, 4)
output:
array([ 1, 5, 9, 13])
NumPy Linspace függvény
linspace két végpont között egyenletesen elosztott mintákat ad vissza.
Syntax:
numpy.linspace(start, stop, num, endpoint)
Itt,
- Rajt: a sorozat kezdőértéke.
- megáll: a sorozat végértéke.
- -Ban: a generálandó minták száma. Az alapértelmezett érték 50.
- Endpoint: ha
True(Alapértelmezett)stopaz utolsó érték. HaFalse,stopnem tartalmazza.
Példa:
Például 10 egyenletesen elosztott érték létrehozására használható 1-től 5-ig.
import numpy as np np.linspace(1.0, 5.0, num=10)
output:
array([1. , 1.44444444, 1.88888889, 2.33333333, 2.77777778, 3.22222222, 3.66666667, 4.11111111, 4.55555556, 5. ])
Ha nem szeretnéd belefoglalni az intervallum utolsó számjegyét, állítsd be endpoint nak nek False.
np.linspace(1.0, 5.0, num=5, endpoint=False)
output:
array([1. , 1.8, 2.6, 3.4, 4.2])
LogSpace NumPy függvény be Python
logspace logaritmikus skálán egyenletesen elosztott számokat ad vissza. logspace ugyanazokat a paramétereket osztja meg, mint np.linspace.
Syntax:
numpy.logspace(start, stop, num, endpoint)
Példa:
np.logspace(3.0, 4.0, num=4)
output:
array([ 1000. , 2154.43469003, 4641.58883361, 10000. ])
Végül, ha egy tömb egyetlen elemének memóriaméretét szeretné ellenőrizni, használhatja a következőt: itemsize.
x = np.array([1,2,3], dtype=np.complex128) x.itemsize
output:
16
Minden elem 16 bájtot vesz igénybe.
Indexelés és szeletelés Python
Az adatok szeletelése egyszerű a NumPy segítségével. A mátrixot fogjuk szeletelni. e. -ban Python, szögletes zárójeleket használ a sorok vagy oszlopok visszaadásához.
Példa:
## Slice import numpy as np e = np.array([(1,2,3), (4,5,6)]) print(e) [[1 2 3] [4 5 6]]
Ne feledd, hogy a NumPy-ban az első tömbindex 0-val kezdődik.
## First row print('First row:', e[0]) ## Second row print('Second row:', e[1])
output:
First row: [1 2 3] Second row: [4 5 6]
In Python, mint sok más nyelven,
- A vessző előtti érték a sorokat jelöli.
- A vessző utáni érték az oszlopokat jelöli.
- Ha egy oszlopot szeretne kiválasztani, adja hozzá
:az oszlopindex előtt. :azt jelenti, hogy a kiválasztott oszlop összes sorát szeretnéd.
print('Second column:', e[:,1])
Second column: [2 5]
A második sor első két értékének visszaadásához használja a következőt: : az összes oszlop kijelöléséhez a második indexig.
## Second Row, two values print(e[1, :2]) [4 5]
Statisztikai függvények in Python
A NumPy hasznos statisztikai függvényeket biztosít egy adott tömb minimumának, maximumának, percentilisének, szórásának, varianciájának és egyebeknek a megtalálásához. A leggyakoribbakat az alábbiakban soroljuk fel.
A NumPy robusztus statisztikai segítőkkel rendelkezik, amelyeket a táblázat foglal össze.
| Funkció | Hülye |
|---|---|
| Min | np.min() |
| max | np.max() |
| Jelenteni | np.mean() |
| Középső | np.median() |
| Szabvány eltérés | np.std() |
Tekintsük a következő tömböt:
Példa:
import numpy as np normal_array = np.random.normal(5, 0.5, 10) print(normal_array)
output:
[5.56171852 4.84233558 4.65392767 4.946659 4.85165567 5.61211317 4.46704244 5.22675736 4.49888936 4.68731125]
NumPy statisztikai függvények példája
### 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))
output:
4.467042435266913 5.612113171990201 4.934841002270593 4.846995625786663 0.3875019367395316
Mi az a numpy dot termék?
numpy.dot egy hatékony függvény mátrixszámításhoz. Például kiszámíthatja a skaláris szorzatot a következővel: np.dot. numpy.dot a skaláris szorzatát adja vissza a és a b, és mind 1D, mind 2D tömböket kezel. 2D bemenetek esetén mátrixszorzást végez.
Syntax:
numpy.dot(x, y, out=None)
paraméterek
Itt,
x, y: bemeneti tömbök. x és a y mindkettőnek 1D-snek vagy 2D-snek kell lennie np.dot() skaláris szorzatként vagy mátrixszorzásként működjön.
ki: opcionális kimeneti argumentum, amely az eredmény rögzítésére szolgál. Ellenkező esetben egy ndarray kerül visszaadásra.
Visszatér
A funkció numpy.dot() két tömb skaláris szorzatát adja vissza x és a ySkalárt ad vissza, ha mindkettő 1D, egyébként tömböt ad vissza. Ha out ha adott, akkor a tömb visszaadásra kerül.
Az emelések
A skaláris szorzat Python felveti a ValueError ha az utolsó dimenzió x nem egyezik a második előtti dimenzióval y.
Példa:
## 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)
output:
14
Mátrixszorzás be Python
A NumPy matmul() A függvény két tömb mátrixszorzatát adja vissza. Így működik.
1) 2D tömbök esetén a mátrixok normál szorzatát adja vissza.
2) 2-nél nagyobb dimenziók esetén a szorzatot mátrixok halmazaként kezeljük.
3) Egy 1D tömböt először mátrixzá alakítunk, majd kiszámítjuk a szorzatot.
Az infixum @ operátor, elérhető ettől az időponttól: Python 3.5, a rövidítése a következőnek: matmul és széles körben használják a modern kódban.
Syntax:
numpy.matmul(x, y, out=None)
Itt,
x, y: bemeneti tömbök. Skalárok nem engedélyezettek.
ki: opcionális paraméter. A kimenet általában egy ndarray-ben tárolódik.
Példa:
Ugyanígy kiszámíthatod a mátrixok szorzását is a következővel: 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)
output:
array([[19, 22], [43, 50]])
döntő
Ha egy mátrix determinánsát kell kiszámítanod, használd a következőt: np.linalg.det()A NumPy gondoskodik a méretekről.
Példa:
## Determinant 2*2 matrix ### 5*8-7*6 np.linalg.det(i)
output:
-2.000000000000005
NumPy műsorszórás ismertetése
A szórásos szórás az a szabály, amely lehetővé teszi a NumPy számára, hogy aritmetikai műveleteket végezzen különböző alakú tömbökön adatok másolása nélkül. Amikor skalárt adunk egy 1D-s vektorhoz vagy egy 1D-s vektort egy 2D-s mátrixhoz, a NumPy a kisebb operandust a hiányzó tengelyek mentén nyújtja, hogy az alakzatok egy vonalba kerüljenek. Ez elkerüli az explicit... Python ciklusok, és ez az egyik fő oka annak, hogy a NumPy kód gyorsnak és tömörnek tűnik.
Két alakzat kompatibilis a szórással, ha jobbról balra összehasonlítva mindkét dimenziópár egyenlő, vagy az egyikük 1-gyel egyenlő. Például egy alakzatmátrix (3, 4) sugároz egy alakzatsor ellen (4,) vagy egy alakú oszlop (3, 1)Ugyanez a logika vezérli a gépi tanulás normalizálását, ahol a részhalmazokat használod.tracta jellemzőnkénti átlagvektor egy mintavételi kötegből egyetlen sorban. A szórás a tenzorkönyvtárak, például a Py által használt fogalmi modell is.Torch, TensorFlow és JAX, így az itt tanult szabályok közvetlenül átvihetők a GPU-kódba.
Hogyan működteti a NumPy a mesterséges intelligenciát és a gépi tanulást?
A NumPy szinte minden modern eszköz alatt megtalálható Python MI-verem. PyTorA ch tenzorok, a TensorFlow eager tenzorok és a JAX tömbök ugyanazt a műsorszórást, szeletelést és újraosztást teszik lehetővé.ping API, amit a NumPy ndarrays-en tanultál. Sok oktatóanyag még mindig előre feldolgozott NumPy tömböket adagol a modell betanítási ciklusaiba, és a keretrendszerek nulla konverzióval elfogadják őket.
Három konkrét minta mutatja be, hogyan kapcsolódik a NumPy a mai mesterséges intelligencia munkához. Először is, az adatmérnökök nyers jellemzőket formálnak NumPy tömbökké, mielőtt átadnák azokat a scikit-learn folyamatoknak vagy a Hugging Face adatkészleteknek. Másodszor, a kutatók a NumPy-t CPU alapként használják, majd beépítik a CuPy-t, amely közel azonos API-t biztosít, de NVIDIA GPU-kon fut CUDA-n keresztül. Harmadszor, a JAX a NumPy API-ra épít az automatikus differenciálás és a just-in-time fordítás hozzáadásához, így ugyanaz a kód, amely a laptopon fut, futtatható a felhőben lévő TPU-kon is. A tanulság az, hogy a NumPy-val elsajátított tömbkezelési készségek minden nagyobb mélytanulási eszközkészletbe beépülnek, ami hasznos lépéssé teszi ezt az oktatóanyagot a mesterséges intelligencia fejlesztése felé vezető úton.
