Python NumPy õpetus algajatele
⚡ Nutikas kokkuvõte
NumPy on alustala Python numbrilise arvutamise, massiivide, maatriksite, lineaaralgebra ja juhusliku valimi arvutamise teek. See NumPy õpetus tutvustab installimist, massiivide loomist, ümberjagamistping, viilutamine, statistika ja maatriksimatemaatika käivitatava programmiga Python näited.

Milles on NumPy Python?
tuim on avatud lähtekoodiga Python matemaatilise, loodusteadusliku, inseneri- ja andmeteaduse programmeerimise teek. See on väga kasulik teek matemaatiliste ja statistiliste toimingute jaoks PythonSee töötab suurepäraselt mitmemõõtmeliste massiivide ja maatriksite korrutamisega ning integreerub hõlpsalt C/ programmeerimiskeelega.C++ ja Fortran.
NumPy on iga teadusprojekti jaoks õige tööriist. See on loodud N-mõõtmeliste massiivide, lineaaralgebra, juhuslike arvude genereerimise, Fourier' teisenduste ja muu jaoks.
NumPy annab Python esmaklassiline tugi mitmemõõtmelistele massiividele ja maatriksitele ning suur hulk matemaatilisi tehteid, mis neid mõjutavad. Selles juhendis vaatame üle olulised funktsioonid, mida peate teadma enne õpetuse juurde liikumist teemal 'TensorFlow. "
Miks kasutada NumPyt?
NumPy on mälusäästlik, seega saab see suurte numbriliste andmete mahtudega kergemini hakkama kui puhas Python loendid. See on väga mugav ka maatriksite korrutamiseks ja ümberjagamisekspingja see on kiire, kuna suurem töö on delegeeritud kompileeritud C-rutiinidele. Tegelikult on sellised teegid nagu TensorFlow, PyTorch ja Scikit-learn tuginevad oma tagaosas maatriksmatemaatika jaoks NumPy massiividele, mis teeb NumPyst vaikse tööhobuse enamiku tänapäevaste andmeteaduse ja tehisintellekti töövoogude all.
NumPy installimine
NumPy teegi installimiseks vaadake meie õpetust Kuidas installida TensorFlow. NumPy on Anacondaga vaikimisi installitud.
Harvadel juhtudel, kui NumPy pole installitud, kasutage mõnda allolevatest valikutest.
NumPy saate installida Anaconda abil:
conda install -c anaconda numpy
- In Jupyter Märkmik:
import sys
!conda install --yes --prefix {sys.prefix} numpy
Pipi kasutajad saavad installida või uuendada ühe käsuga:
pip install --upgrade numpy
Importige NumPy ja kontrollige versiooni
Numpy importimise käsk on järgmine:
import numpy as np
Ülaltoodud rida nimetab NumPy nimeruumi ümber npSee otsetee võimaldab teil NumPy funktsioonide, meetodite ja atribuutide ette lisada eesliite np. asemel typing numpy.ja see on standardne konventsioon, mida leiate kogu NumPy ökosüsteemist.
NumPy installitud versiooni kontrollimiseks kasutage alltoodud käsku:
print(np.__version__)
Väljund:
2.1.3
NumPy 2.0 saadeti välja juunis 2024 ja see on praegune stabiilne põhiseeria. Kui teie projekt sõltub endiselt 1.x API-st, kinnitage see numpy<2 teie nõuete failis, kuna mõned pärandaliased, näiteks np.float eemaldati versioonis 2.0.
Mis on a Python NumPy massiiv?
NumPy massiivid näevad välja natuke sellised Python esmapilgul loendid, kuid käituvad väga erinevalt. Lugejatele, kes pole teemaga tuttavad, selgitame, mis on ndarray ja miks see on oluline.
Nagu nimigi ütleb, on NumPy massiiv NumPy teegi keskne andmestruktuur. Nimi ise on lühend sõnadest „Numeric“ (numbriline). Python” või „Arv Python” ja ndarray on homogeenne, fikseeritud suurusega mäluplokk, millel on teadaolev kuju ja andmetüüp.
NumPy massiivi loomine
Lihtsaim viis massiivi loomiseks NumPy-s on alustada Python nimekiri.
myPythonList = [1,9,8,3]
teisendamine Python loend NumPy massiivi, kasutades np.array.
numpy_array_from_list = np.array(myPythonList)
Kuva massiivi sisu.
numpy_array_from_list
Väljund:
array([1, 9, 8, 3])
Praktikas ei ole vaja deklareerida a Python loend esimesena. Neid kahte sammu saab kombineerida.
a = np.array([1,9,8,3])
MÄRKUS: NumPy dokumentatsioon mainib ka np.ndarray, Kuid np.array on igapäevaseks kasutamiseks soovitatav tehase funktsioon.
Samal viisil saate luua ka NumPy massiivi tuple'ist.
Matemaatiline Operamassiivi
Saate teha matemaatilisi tehteid, näiteks liitmist, alalõikutracMassiivi jagamine, korrutamine ja jagamine. Süntaks on massiivi nimi, millele järgneb operaator (+, -, *, /), millele järgneb operand. Need operatsioonid on vektoriseeritud, mis tähendab, et NumPy rakendab neid igale elemendile ilma selgesõnalise Python silmus
Näide:
numpy_array_from_list + 10
Väljund:
array([11, 19, 18, 13])
See toiming liidab NumPy massiivi igale elemendile 10.
Massiivi kuju
Massiivi kuju saab kontrollida käsuga shape atribuut, millele pääseb ligi massiivi nimele lisades. Samal viisil saate tüüpi kontrollida dtype.
import numpy as np a = np.array([1,2,3]) print(a.shape) print(a.dtype) (3,) int64
Täisarv on väärtus ilma komakohata. Kui lood kümnendkohtadega massiivi, muutub andmetüüp (dtype) float-iks.
#### Different type b = np.array([1.1,2.0,3.2]) print(b.dtype) float64
2-mõõtmeline massiiv
Sulgudes oleva komaga saate lisada mõõtme.
Pane tähele, et sisemised tuupled peavad asuma välimiste nurksulgude sees. [].
### 2 dimension c = np.array([(1,2,3), (4,5,6)]) print(c.shape) (2, 3)
3-mõõtmeline massiiv
Kõrgemaid mõõtmeid saab konstrueerida samal viisil.
### 3 dimension d = np.array([ [[1, 2,3], [4, 5, 6]], [[7, 8,9], [10, 11, 12]] ]) print(d.shape) (2, 2, 3)
| Eesmärk | Code |
|---|---|
| Loo massiiv | massiiv([1,2,3]) |
| printida kujund | massiiv([.]).kujund |
Mis on numpy.zeros()?
numpy.zeros() or np.zeros on Python funktsioon, mida kasutatakse nullidega täidetud maatriksi loomiseks. numpy.zeros() on kasulik, kui teil on vaja TensorFlow's esimese iteratsiooni ajal kaalusid initsialiseerida või muude statistiliste ülesannete jaoks kohatäitepuhvreid seadistada.
numpy.zeros() funktsioon Süntaks
numpy.zeros(shape, dtype=float, order='C')
Python numpy.zeros() Parameetrid
Siin
- kuju: NumPy nullmassiivi kuju.
- Dtüüp: elementide andmetüüp. See on valikuline ja vaikeväärtus on
float64. - järjekord: vaikimisi on
C, mis on rida-pea paigutus, mida kasutabnumpy.zeros()in Python.
Python numpy.zeros() Näide
import numpy as np np.zeros((2,2))
Väljund:
array([[0., 0.], [0., 0.]])
Numpy nulli näide andmetüübiga
import numpy as np np.zeros((2,2), dtype=np.int16)
Väljund:
array([[0, 0], [0, 0]], dtype=int16)
Mis on numpy.ones()?
np.ones() funktsioon loob ühelistega täidetud maatriksi. numpy.ones() in Python on kasulik kaalude initsialiseerimisel TensorFlow'i esimese iteratsiooni ajal ja muude statistiliste ülesannete puhul.
Python numpy.ones() Süntaks
numpy.ones(shape, dtype=float, order='C')
Python numpy.ones() Parameetrid
Siin
- kuju: np.one'ide kuju Python Array.
- Dtüüp: elementide andmetüüp. See on valikuline ja vaikeväärtus on
float64. - järjekord: vaikimisi on
C, mis on rea-peamise paigutus.
Python numpy.ones() 2D massiiv andmetüübi näitega
import numpy as np np.ones((1,2,3), dtype=np.int16)
Väljund:
array([[[1, 1, 1], [1, 1, 1]]], dtype=int16)
numpy.reshape() funktsioon sisse Python
Python NumPy ümberkujundamine muudab massiivi kuju ilma andmeid muutmata. Enne mudelile edastamist peate võib-olla andmed laiast vormingust pikaks muutma või ühemõõtmelisest vektorist kahemõõtmelisse maatriksisse kolima. np.reshape funktsioon tegeleb sellega ühe kõnega.
np.reshape() süntaks
numpy.reshape(a, newShape, order='C')
Siin
a: massiiv, mida soovite ümber kujundada.
uus Kuju: uus soovitud kuju.
järjekord: vaikimisi on C, rea-peaeriala paigutus.
NumPy ümberkujundamise näide
import numpy as np e = np.array([(1,2,3), (4,5,6)]) print(e) e.reshape(3,2)
Väljund:
// Before reshape [[1 2 3] [4 5 6]]
//After Reshape array([[1, 2], [3, 4], [5, 6]])
numpy.flatten() sisse Python
Python NumPy Flatten tagastab massiivi koopia, mis on kokku ahendatud ühte dimensiooni. Närvivõrkudega (nt konvvõrkudega) töötades tuleb pilditensorit enne tihedale kihile edastamist sageli lamendada. np.flatten() funktsioon tegeleb sellega ühe kõnega.
np.flatten() süntaks
numpy.flatten(order='C')
Siin
järjekord: vaikimisi on C, rea-peaeriala paigutus.
NumPy Flatteni näide
e.flatten()
Väljund:
array([1, 2, 3, 4, 5, 6])
Mis on numpy.hstack() Python?
numpy.hstack on Python funktsioon, mida kasutatakse sisendmassiivide järjestuste horisontaalseks virnastamiseks ühte massiivi. hstack(), lisate andmeid veeru teljele. See on NumPy-s väga mugav abimees, kui teil on vaja tunnusvektoreid kõrvuti ühendada.
Uurime hstack in Python näitega.
Näide:
## 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äljund:
Horizontal Append: [1 2 3 4 5 6]
Milles on numpy.vstack() Python?
numpy.vstack on Python funktsioon, mida kasutatakse sisendmassiivide järjestuste vertikaalseks virnastamiseks ühte massiivi. vstack(), lisate andmeid rea teljele, mis on mugav valimite partiide kombineerimisel.
Uurime seda näite abil.
Näide:
## 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äljund:
Vertical Append: [[1 2 3] [4 5 6]]
Pärast NumPy õppimist vstack ja hstack, vaatame näidet, mis genereerib NumPy-s juhuslikke numbreid.
Loo juhuslik Numbers NumPy abil
Gaussi jaotusest juhuslike arvude genereerimiseks kasutage järgmist valemit:
numpy.random.normal(loc, scale, size)
Siin
- Koht: keskmine. Jaotuse keskpunkt.
- Skaala: standardhälve.
- Mõõt: tagastatud proovide arv.
Näide:
## 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]
Graafikule kantuna on jaotus sarnane järgmisele graafikule.

Pane tähele, et uuem kood kasutab üha enam moodsat generaatori API-t, np.random.default_rng(), mis on soovitatav asendaja pärandversioonile np.random.normal kõned NumPy 2.x-s.
NumPy Asarray funktsioon
. asarray() Funktsioon teisendab sisendi massiiviks. Sisend võib olla loend, tuple, ndarray või sarnane jada.
süntaksit:
numpy.asarray(data, dtype=None, order=None)
Siin
andmed: andmed, mida soovite massiiviks teisendada.
dtüüp: valikuline. Kui pole täpsustatud, tuletatakse andmetüüp sisendandmetest.
järjekord: vaikimisi on C, rea-peamise paigutus. Teine võimalus on F (Fortran-stiilis veerg-major).
Näide:
Vaatleme järgmist nelja rea ja nelja veeruga kahemõõtmelist maatriksit, mis on täidetud arvuga 1.
import numpy as np A = np.matrix(np.ones((4,4)))
Kui proovite maatriksi väärtust muuta läbi np.array, originaali ei muudeta. Põhjus on selles, et np.array loob maatriksi koopia.
np.array(A)[2]=2 print(A) [[1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.]]
Maatriks jääb muutmata. Kasutamine asarray kui soovite algset massiivi kohapeal muuta. Vaatame, mis juhtub, kui määrate kolmanda rea väärtuseks 2.
np.asarray(A)[2]=2 print(A)
Code Selgitus:
np.asarray(A) teisendab maatriksi A massiivivaatesse.
[2] valib kolmanda rea.
Väljund:
[[1. 1. 1. 1.] [1. 1. 1. 1.] [2. 2. 2. 2.] # new value [1. 1. 1. 1.]]
Mis on numpy.arange()?
numpy.arange() on sisseehitatud NumPy funktsioon, mis tagastab ndarray, mis sisaldab ühtlaselt jaotatud väärtusi määratletud intervallis. Näiteks väärtuste 1 kuni 10 loomiseks võite kasutada np.arange() in Python.
süntaksit:
numpy.arange(start, stop, step, dtype)
Python NumPy vahemiku parameetrid:
- Avaleht: intervalli algus
np.arangein Python. - Peatus: intervalli lõpp.
- Samm: väärtuste vaheline kaugus. Vaikimisi on samm 1.
- Dtüüp: NumPy väljundmassiivi tüüp
arange.
Näide:
import numpy as np np.arange(1, 11)
Väljund:
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
Näide:
Selle NumPy sammu muutmiseks arange Näiteks lisage sulgudesse kolmas number. See muudab sammu suurust.
import numpy as np np.arange(1, 14, 4)
Väljund:
array([ 1, 5, 9, 13])
NumPy Linspace'i funktsioon
linspace tagastab kahe lõpp-punkti vahel ühtlaselt jaotatud valimid.
süntaksit:
numpy.linspace(start, stop, num, endpoint)
Siin
- Avaleht: jada algväärtus.
- Peatus: jada lõppväärtus.
- Sisse: genereeritavate näidiste arv. Vaikimisi on see 50.
- Lõpp-punkt: kui
True(vaikimisi)stopon viimane väärtus. KuiFalse,stopei ole kaasas.
Näide:
Näiteks saab seda kasutada 10 ühtlaselt paigutatud väärtuse loomiseks vahemikus 1 kuni 5.
import numpy as np np.linspace(1.0, 5.0, num=10)
Väljund:
array([1. , 1.44444444, 1.88888889, 2.33333333, 2.77777778, 3.22222222, 3.66666667, 4.11111111, 4.55555556, 5. ])
Kui te ei soovi intervalli viimast numbrit lisada, määrake endpoint et False.
np.linspace(1.0, 5.0, num=5, endpoint=False)
Väljund:
array([1. , 1.8, 2.6, 3.4, 4.2])
LogSpace NumPy funktsioon sisse Python
logspace tagastab logaritmilisel skaalal ühtlaselt paiknevad arvud. logspace jagab samu parameetreid nagu np.linspace.
süntaksit:
numpy.logspace(start, stop, num, endpoint)
Näide:
np.logspace(3.0, 4.0, num=4)
Väljund:
array([ 1000. , 2154.43469003, 4641.58883361, 10000. ])
Lõpuks, kui soovite kontrollida massiivi üksiku elemendi mälumahtu, saate seda kasutada itemsize.
x = np.array([1,2,3], dtype=np.complex128) x.itemsize
Väljund:
16
Iga element võtab 16 baiti.
Indekseerimine ja sisselõikamine Python
Andmete viilutamine on NumPy abil lihtne. Me viilutame maatriksi e. sisse Python, ridade või veergude tagastamiseks kasutate nurksulge.
Näide:
## Slice import numpy as np e = np.array([(1,2,3), (4,5,6)]) print(e) [[1 2 3] [4 5 6]]
Pea meeles, et NumPy-s algab esimene massiivi indeks 0-st.
## First row print('First row:', e[0]) ## Second row print('Second row:', e[1])
Väljund:
First row: [1 2 3] Second row: [4 5 6]
In Python, nagu paljudes teistes keeltes,
- Koma ees olev väärtus tähistab ridu.
- Koma järel olev väärtus tähistab veerge.
- Kui soovite veeru valida, lisage
:enne veeruindeksit. :tähendab, et soovite kõiki valitud veeru ridu.
print('Second column:', e[:,1])
Second column: [2 5]
Teise rea kahe esimese väärtuse tagastamiseks kasutage : et valida kõik veerud kuni teise indeksini.
## Second Row, two values print(e[1, :2]) [4 5]
Statistilised funktsioonid sisse Python
NumPy pakub kasulikku statistiliste funktsioonide komplekti antud massiivi miinimumi, maksimumi, protsentiili, standardhälbe, dispersiooni ja muu leidmiseks. Kõige levinumad on loetletud allpool.
NumPy-l on kaasas tugevad statistilised abimehed, mis on kokku võetud tabelis.
| funktsioon | Nuhklik |
|---|---|
| min | np.min() |
| max | np.max() |
| Keskmine | np.mean() |
| Mediaan | np.mediaan() |
| Standardhälve | np.std() |
Vaatleme järgmist massiivi:
Näide:
import numpy as np normal_array = np.random.normal(5, 0.5, 10) print(normal_array)
Väljund:
[5.56171852 4.84233558 4.65392767 4.946659 4.85165567 5.61211317 4.46704244 5.22675736 4.49888936 4.68731125]
NumPy statistiliste funktsioonide näide
### 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äljund:
4.467042435266913 5.612113171990201 4.934841002270593 4.846995625786663 0.3875019367395316
Mis on numpy dot toode?
numpy.dot on võimas funktsioon maatriksi arvutamiseks. Näiteks saate skalaarkorrutise arvutada järgmiselt: np.dot. numpy.dot tagastab skalaarkorrutise a ja bja käsitleb nii 1D- kui ka 2D-massiive. 2D-sisendite puhul teostab see maatriksite korrutamist.
süntaksit:
numpy.dot(x, y, out=None)
parameetrid
Siin
x, ysisendmassiivid. x ja y mõlemad peaksid olema 1D või 2D np.dot() toimima skalaarkorrutise või maatriksikorrutisena.
välja: valikuline väljundargument, mida kasutatakse tulemuse jäädvustamiseks. Vastasel juhul tagastatakse ndarray.
Tagastamine
funktsioon numpy.dot() tagastab kahe massiivi skalaarkorrutise x ja ySee tagastab skalaari, kui mõlemad on ühemõõtmelised, vastasel juhul tagastab massiivi. Kui out kui antud, tagastatakse see massiiv.
Tõstab
Skalaarne korrutis Python tõstab ValueError kui viimane mõõde x ei vasta eelviimasele mõõtmele y.
Näide:
## 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äljund:
14
Maatrikskorrutamine sisse Python
NumPy matmul() Funktsioon tagastab kahe massiivi maatrikskorrutise. See töötab järgmiselt.
1) 2D massiivide puhul tagastab see maatriksi normaalkorrutise.
2) Mõõtmete korral, mis on suuremad kui 2, käsitletakse korrutist maatriksite virnana.
3) Ühemõõtmeline massiiv teisendatakse esmalt maatriksiks ja seejärel arvutatakse korrutis.
Siseliide @ operaator, saadaval alates Python 3.5 on lühend sõnast matmul ja seda kasutatakse laialdaselt tänapäevases koodis.
süntaksit:
numpy.matmul(x, y, out=None)
Siin
x, ySisendmassiivid. Skalaarid ei ole lubatud.
välja: valikuline parameeter. Tavaliselt salvestatakse väljund ndarray-mällu.
Näide:
Samal viisil saate arvutada maatriksite korrutamist 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äljund:
array([[19, 22], [43, 50]])
Determinant
Kui teil on vaja arvutada maatriksi determinant, kasutage np.linalg.det()NumPy hoolitseb mõõtmete eest teie eest.
Näide:
## Determinant 2*2 matrix ### 5*8-7*6 np.linalg.det(i)
Väljund:
-2.000000000000005
NumPy ringhäälingu selgitus
Levitamine on reegel, mis võimaldab NumPy-l erineva kujuga massiividega aritmeetilisi toiminguid teha ilma andmeid kopeerimata. Kui lisate skalaari ühemõõtmelisele vektorile või ühemõõtmelisele vektorile kahemõõtmelisele maatriksile, venitab NumPy väiksemat operandi mööda puuduvaid telgi, nii et kujundid joonduvad. See väldib selgesõnalist Python tsüklid ja see on üks peamisi põhjuseid, miks NumPy kood tundub kiire ja kokkuvõtlik.
Kaks kujundit sobivad edastamiseks, kui paremalt vasakule võrreldes on iga mõõtmete paar kas võrdne või üks neist võrdub 1-ga. Näiteks kuju maatriks (3, 4) saated kuju rea vastu (4,) või kujuga veerg (3, 1)Sama loogika juhib normaliseerimist masinõppes, kus te alamtegijatetracta tunnuse kohta arvutatav keskmine vektor ühel real olevate näidiste partiist. Ringhääling on ka kontseptuaalne mudel, mida kasutavad tensorteegid, näiteks PyTorch, TensorFlow ja JAX, seega kanduvad siin õpitud reeglid otse üle GPU-koodi.
Kuidas NumPy tehisintellekti ja masinõpet toetab
NumPy asub peaaegu iga moodsa all Python Tehisintellekti pinu. PyTorch tensorid, TensorFlow innukad tensorid ja JAX massiivid pakuvad sama edastamist, viilutamist ja ümberjagamistping API, mille õppisite NumPy ndarrays'is. Paljud õpetused edastavad endiselt eeltöödeldud NumPy massiive mudeli treeningtsüklitesse ja raamistikud aktsepteerivad neid ilma konverteerimiseta.
Kolm konkreetset mustrit näitavad, kuidas NumPy tänapäeval tehisintellektiga ühendub. Esiteks vormivad andmeinsenerid toorfunktsioonid NumPy massiivideks enne nende edastamist scikit-learni torujuhtmetele või Hugging Face andmekogumitele. Teiseks kasutavad teadlased NumPy-d protsessori baasjoonena ja seejärel vahetavad CuPy sisse, mis pakub peaaegu identset API-t, kuid töötab NVIDIA GPU-del CUDA kaudu. Kolmandaks ehitab JAX NumPy API-le, et lisada automaatne eristamine ja just-in-time kompileerimine, nii et sama kood, mis töötab sülearvutil, saab töötada pilves TPU-del. Kokkuvõttes on NumPy abil omandatud massiivioskused kanduvad üle igasse suuremasse süvaõppe tööriistakomplekti, mis teeb sellest õpetusest kasuliku sammu tehisintellekti arendamise teel.
