Python NumPy tutorijal za početnike
⚡ Pametni sažetak
NumPy je temeljni Python biblioteka za numeričko računanje, pokretanje nizova, matrica, linearne algebre i slučajnog uzorkovanja. Ovaj NumPy tutorial vodi vas kroz instalaciju, stvaranje nizova, preoblikovanje...ping, rezanje, statistika i matrična matematika s runnable Python primjeri.
U čemu je NumPy Python?
numpy je otvorenog koda Python biblioteka za matematičko, znanstveno, inženjersko i podatkovno programiranje. Vrlo je korisna biblioteka za matematičke i statističke operacije u PythonSavršeno radi s višedimenzionalnim nizovima i množenjem matrica te se lako integrira s C/C++ i Fortran.
Za bilo koji znanstveni projekt, NumPy je alat koji treba znati. Izgrađen je za N-dimenzionalne nizove, linearnu algebru, generiranje slučajnih brojeva, Fourierove transformacije i još mnogo toga.
NumPy daje Python vrhunska podrška za višedimenzionalne nizove i matrice, plus veliki skup matematičkih operacija koje djeluju na njih. U ovom vodiču pregledat ćemo bitne funkcije koje trebate znati prije nego što prijeđemo na tutorial o 'TensorFlow'.
Zašto koristiti NumPy?
NumPy je memorijski učinkovit, tako da može lakše obrađivati velike količine numeričkih podataka od čistog NumPyja. Python popise. Također je vrlo praktično za množenje matrica i rješavanjeping, i brz je jer se teški posao delegira kompiliranim C rutinama. Zapravo, biblioteke poput TensorFlowa, PyTorch i Scikit-learn oslanjaju se na NumPy polja za matričnu matematiku u svom backendu, što NumPy čini tihim radnim konjem ispod većine modernih tijekova rada u znanosti o podacima i umjetnoj inteligenciji.
Kako instalirati NumPy
Za instalaciju NumPy biblioteke, pogledajte naš vodič Kako instalirati TensorFlow. NumPy je instaliran prema zadanim postavkama s Anacondom.
U rijetkim slučajevima kada NumPy nije instaliran, koristite bilo koju od dolje navedenih opcija.
NumPy možete instalirati pomoću Anaconde:
conda install -c anaconda numpy
- In Jupyter Notebook:
import sys
!conda install --yes --prefix {sys.prefix} numpy
Korisnici Pipa mogu instalirati ili nadograditi jednom naredbom:
pip install --upgrade numpy
Uvezite NumPy i provjerite verziju
Naredba za uvoz numpyja je:
import numpy as np
Gornji redak preimenuje imenski prostor NumPy u npOvaj prečac vam omogućuje da NumPy funkcijama, metodama i atributima dodate prefiks np. umjesto tebeping numpy., i to je standardna konvencija koju ćete naći u cijelom NumPy ekosustavu.
Za provjeru instalirane verzije NumPy-a, upotrijebite sljedeću naredbu:
print(np.__version__)
Izlaz:
2.1.3
NumPy 2.0 je isporučen u lipnju 2024. i trenutno je stabilna glavna serija. Ako vaš projekt još uvijek ovisi o 1.x API-ju, prikvačite ga na numpy<2 u vašoj datoteci zahtjeva jer neki stariji pseudonimi poput np.float uklonjeni su u verziji 2.0.
Što je a Python NumPy polje?
NumPy nizovi izgledaju pomalo kao Python popisi na prvi pogled, ali se ponašaju vrlo različito. Za čitatelje koji su novi u ovoj temi, pojasnimo što je ndarray i zašto je važan.
Kao što i samo ime govori, NumPy niz je središnja struktura podataka NumPy biblioteke. Sam naziv je skraćenica za „Numeric Python” ili “Brojčani Python”, a ndarray je homogeni blok memorije fiksne veličine poznatog oblika i tipa podataka.
Stvaranje NumPy polja
Najjednostavniji način za stvaranje niza u NumPy-u je započeti od Python Popis.
myPythonList = [1,9,8,3]
pretvoriti Python popis u NumPy niz pomoću np.array.
numpy_array_from_list = np.array(myPythonList)
Prikaži sadržaj niza.
numpy_array_from_list
Izlaz:
array([1, 9, 8, 3])
U praksi, nema potrebe deklarirati a Python prvo navedite. Dva koraka se mogu kombinirati.
a = np.array([1,9,8,3])
NAPOMENA: Dokumentacija NumPy-a također spominje np.ndarray, Ali np.array je preporučena tvornička funkcija za svakodnevnu upotrebu.
Na isti način možete stvoriti i NumPy niz iz tuple-a.
Matematički Operacije na polju
Možete izvoditi matematičke operacije kao što su zbrajanje, oduzimanjetraccija, dijeljenje i množenje na nizu. Sintaksa je naziv niza, nakon čega slijedi operator (+, -, *, /), nakon čega slijedi operand. Ove operacije su vektorizirane, što znači da ih NumPy primjenjuje na svaki element bez eksplicitnog Python petlja.
Primjer:
numpy_array_from_list + 10
Izlaz:
array([11, 19, 18, 13])
Ova operacija dodaje 10 svakom elementu NumPy niza.
Oblik niza
Oblik niza možete provjeriti pomoću shape atribut, kojem se pristupa dodavanjem nazivu polja. Na isti način možete provjeriti tip pomoću dtype.
import numpy as np a = np.array([1,2,3]) print(a.shape) print(a.dtype) (3,) int64
Cijeli broj je vrijednost bez decimalne točke. Ako stvorite niz s decimalama, tip podataka se mijenja u float.
#### Different type b = np.array([1.1,2.0,3.2]) print(b.dtype) float64
2 dimenzijski niz
Dimenziju možete dodati zarezom unutar zagrada.
Imajte na umu da unutarnje torke moraju biti unutar vanjskih zagrada [].
### 2 dimension c = np.array([(1,2,3), (4,5,6)]) print(c.shape) (2, 3)
3 dimenzijski niz
Više dimenzije mogu se konstruirati na isti način.
### 3 dimension d = np.array([ [[1, 2,3], [4, 5, 6]], [[7, 8,9], [10, 11, 12]] ]) print(d.shape) (2, 2, 3)
| Cilj | Code |
|---|---|
| Stvori niz | niz([1,2,3]) |
| ispisati oblik | niz([.]).oblik |
Što je numpy.zeros()?
numpy.nule() or np.zeros je Python funkcija koja se koristi za stvaranje matrice ispunjene nulama. numpy.zeros() korisno je kada trebate inicijalizirati težine tijekom prve iteracije u TensorFlowu ili postaviti rezervirane međuspremnike za druge statističke zadatke.
Sintaksa funkcije numpy.zeros().
numpy.zeros(shape, dtype=float, order='C')
Python numpy.zeros() Parametri
Ovdje,
- Oblikujte: oblik NumPy nultog niza.
- Dvrsta: tip podataka elemenata. Nije obavezno, a zadana vrijednost je
float64. - Narudžba: zadano je
C, što je raspored glavnih redaka koji koristinumpy.zeros()in Python.
Python numpy.zeros() Primjer
import numpy as np np.zeros((2,2))
Izlaz:
array([[0., 0.], [0., 0.]])
Primjer numpy zero s Datatype
import numpy as np np.zeros((2,2), dtype=np.int16)
Izlaz:
array([[0, 0], [0, 0]], dtype=int16)
Što je numpy.ones()?
funkcija np.ones(). stvara matricu ispunjenu jedinicama. numpy.ones() in Python korisno je kada inicijalizirate težine tijekom prve iteracije u TensorFlowu i za druge statističke zadatke.
Python numpy.ones() Sintaksa
numpy.ones(shape, dtype=float, order='C')
Python numpy.ones() parametri
Ovdje,
- Oblikujteoblik np.ones Python Poredak.
- Dvrsta: tip podataka elemenata. Nije obavezno, a zadana vrijednost je
float64. - Narudžba: zadano je
C, što je raspored po glavnim redovima.
Python numpy.ones() 2D niz s primjerom vrste podataka
import numpy as np np.ones((1,2,3), dtype=np.int16)
Izlaz:
array([[[1, 1, 1], [1, 1, 1]]], dtype=int16)
numpy.reshape() funkcija u Python
Python NumPy preoblikovanje mijenja oblik polja bez promjene njegovih podataka. Možda ćete morati preoblikovati podatke iz širokog u dugi format ili se prebaciti iz 1D vektora u 2D matricu prije nego što ih unesete u model. np.reshape funkcija to rješava u jednom pozivu.
Sintaksa np.reshape()
numpy.reshape(a, newShape, order='C')
Ovdje,
a: niz koji želite preoblikovati.
noviOblik: novi željeni oblik.
Narudžba: zadano je C, raspored glavnih redaka.
Primjer NumPy Reshape
import numpy as np e = np.array([(1,2,3), (4,5,6)]) print(e) e.reshape(3,2)
Izlaz:
// Before reshape [[1 2 3] [4 5 6]]
//After Reshape array([[1, 2], [3, 4], [5, 6]])
numpy.flatten() u Python
Python NumPy izravnavanje vraća kopiju niza sažetog u jednu dimenziju. Kada radite s neuronskim mrežama kao što su convnets, često trebate izravnati tenzor slike prije nego što ga prenesete u gusti sloj. np.flatten() funkcija to rješava u jednom pozivu.
Sintaksa np.flatten()
numpy.flatten(order='C')
Ovdje,
Narudžba: zadano je C, raspored glavnih redaka.
Primjer NumPy Flatten
e.flatten()
Izlaz:
array([1, 2, 3, 4, 5, 6])
U čemu je numpy.hstack(). Python?
numpy.hstack je Python funkcija koja se koristi za horizontalno slaganje nizova ulaznih nizova u jedan niz. S hstack(), dodajete podatke duž osi stupca. To je vrlo praktična pomoć u NumPy-u kada trebate spojiti vektore značajki jedan pored drugog.
Hajde da proučavamo hstack in Python s primjerom.
Primjer:
## 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)))
Izlaz:
Horizontal Append: [1 2 3 4 5 6]
U čemu je numpy.vstack(). Python?
numpy.vstack je Python funkcija koja se koristi za vertikalno slaganje nizova ulaznih nizova u jedan niz. S vstack(), dodajete podatke duž osi retka, što je praktično kada želite kombinirati serije uzoraka.
Proučimo to s primjerom.
Primjer:
## 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)))
Izlaz:
Vertical Append: [[1 2 3] [4 5 6]]
Nakon proučavanja NumPy-a vstack i hstack, pogledajmo primjer koji generira slučajne brojeve u NumPy-u.
Generiraj nasumično Numbers koristeći NumPy
Za generiranje slučajnih brojeva iz Gaussove distribucije koristite:
numpy.random.normal(loc, scale, size)
Ovdje,
- Loc: srednja vrijednost. Središte distribucije.
- Skala: standardna devijacija.
- Veličina: broj vraćenih uzoraka.
Primjer:
## 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]
Ako se prikaže grafički, distribucija je slična sljedećem grafikonu.

Imajte na umu da noviji kod sve više koristi moderni API generatora, np.random.default_rng(), što je preporučena zamjena za naslijeđeni np.random.normal pozivi u NumPy 2.x.
Funkcija NumPy Asarray
The asarray() Funkcija pretvara ulaz u polje. Ulaz može biti lista, tuple, ndarray ili sličan niz.
Sintaksa:
numpy.asarray(data, dtype=None, order=None)
Ovdje,
datum: podaci koje želite pretvoriti u niz.
dtype: opcionalno. Ako nije navedeno, tip podataka se zaključuje iz ulaznih podataka.
Narudžba: zadano je C, raspored po glavnim redovima. Druga mogućnost je F (Fortrastupac u n-stilu (glavni stupac).
Primjer:
Razmotrimo sljedeću 2D matricu s četiri retka i četiri stupca, ispunjenu s 1.
import numpy as np A = np.matrix(np.ones((4,4)))
Ako pokušate promijeniti vrijednost u matrici putem np.array, original nije modificiran. Razlog je taj što np.array stvara kopiju matrice.
np.array(A)[2]=2 print(A) [[1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.]]
Matrica se ne mijenja. Koristite asarray kada želite izmijeniti izvorni niz na mjestu. Pogledajmo što se događa kada treći redak postavite na vrijednost 2.
np.asarray(A)[2]=2 print(A)
Code Objašnjenje:
np.asarray(A) pretvara matricu A u prikaz niza.
[2] odabire treći red.
Izlaz:
[[1. 1. 1. 1.] [1. 1. 1. 1.] [2. 2. 2. 2.] # new value [1. 1. 1. 1.]]
Što je numpy.arange()?
numpy.arange() je ugrađena NumPy funkcija koja vraća ndarray koji sadrži ravnomjerno raspoređene vrijednosti unutar definiranog intervala. Na primjer, za stvaranje vrijednosti od 1 do 10, možete pozvati np.arange() in Python.
Sintaksa:
numpy.arange(start, stop, step, dtype)
Python NumPy parametri rasporeda:
- Start: početak intervala za
np.arangein Python. - zaustaviti: kraj intervala.
- Korak: razmak između vrijednosti. Zadani korak je 1.
- Dvrsta: tip izlaznog niza za NumPy
arange.
Primjer:
import numpy as np np.arange(1, 11)
Izlaz:
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
Primjer:
Za promjenu koraka u ovom NumPy-u arange Na primjer, dodajte treći broj u zagrade. To mijenja veličinu koraka.
import numpy as np np.arange(1, 14, 4)
Izlaz:
array([ 1, 5, 9, 13])
Funkcija NumPy Linspace
linspace vraća ravnomjerno raspoređene uzorke između dvije krajnje točke.
Sintaksa:
numpy.linspace(start, stop, num, endpoint)
Ovdje,
- Start: početna vrijednost niza.
- zaustaviti: krajnja vrijednost niza.
- U: broj uzoraka za generiranje. Zadana vrijednost je 50.
- Endpoint: ako
True(zadano),stopje posljednja vrijednost. AkoFalse,stopnije uključen.
Primjer:
Na primjer, može se koristiti za stvaranje 10 ravnomjerno raspoređenih vrijednosti od 1 do 5.
import numpy as np np.linspace(1.0, 5.0, num=10)
Izlaz:
array([1. , 1.44444444, 1.88888889, 2.33333333, 2.77777778, 3.22222222, 3.66666667, 4.11111111, 4.55555556, 5. ])
Ako ne želite uključiti posljednju znamenku u interval, postavite endpoint do False.
np.linspace(1.0, 5.0, num=5, endpoint=False)
Izlaz:
array([1. , 1.8, 2.6, 3.4, 4.2])
LogSpace NumPy funkcija u Python
logspace vraća ravnomjerno raspoređene brojeve na logaritamskoj skali. logspace dijeli iste parametre kao np.linspace.
Sintaksa:
numpy.logspace(start, stop, num, endpoint)
Primjer:
np.logspace(3.0, 4.0, num=4)
Izlaz:
array([ 1000. , 2154.43469003, 4641.58883361, 10000. ])
Konačno, ako želite provjeriti veličinu memorije jednog elementa u nizu, možete koristiti itemsize.
x = np.array([1,2,3], dtype=np.complex128) x.itemsize
Izlaz:
16
Svaki element zauzima 16 bajtova.
Indeksiranje i rezanje Python
Rezanje podataka je jednostavno s NumPy-jem. Rezat ćemo matricu e, u Python, koristite uglate zagrade za vraćanje redaka ili stupaca.
Primjer:
## Slice import numpy as np e = np.array([(1,2,3), (4,5,6)]) print(e) [[1 2 3] [4 5 6]]
Imajte na umu da u NumPy prvi indeks polja počinje od 0.
## First row print('First row:', e[0]) ## Second row print('Second row:', e[1])
Izlaz:
First row: [1 2 3] Second row: [4 5 6]
In Python, kao i u mnogim drugim jezicima,
- Vrijednost prije zareza označava retke.
- Vrijednost iza zareza označava stupce.
- Ako želite odabrati stupac, dodajte
:prije indeksa stupca. :znači da želite sve retke iz odabranog stupca.
print('Second column:', e[:,1])
Second column: [2 5]
Za vraćanje prve dvije vrijednosti drugog retka koristite : za odabir svih stupaca do drugog indeksa.
## Second Row, two values print(e[1, :2]) [4 5]
Statističke funkcije u Python
NumPy pruža koristan skup statističkih funkcija za pronalaženje minimuma, maksimuma, percentila, standardne devijacije, varijance i još mnogo toga iz zadanog niza. Najčešće su navedene u nastavku.
NumPy dolazi s robusnim statističkim pomagačima, sažetim u tablici.
| funkcija | numpy |
|---|---|
| Min | np.min() |
| maksimum | np.max() |
| značiti | np.mean() |
| srednja | np.medijan() |
| Standardna devijacija | np.std() |
Razmotrite sljedeći niz:
Primjer:
import numpy as np normal_array = np.random.normal(5, 0.5, 10) print(normal_array)
Izlaz:
[5.56171852 4.84233558 4.65392767 4.946659 4.85165567 5.61211317 4.46704244 5.22675736 4.49888936 4.68731125]
Primjer statističkih funkcija 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))
Izlaz:
4.467042435266913 5.612113171990201 4.934841002270593 4.846995625786663 0.3875019367395316
Što je numpy točkasti umnožak?
numpy.dot je moćna funkcija za izračunavanje matrica. Na primjer, skalarni produkt možete izračunati pomoću np.dot. numpy.dot vraća skalarni produkt od a i bi obrađuje i 1D i 2D nizove. Za 2D ulaze izvodi množenje matrica.
Sintaksa:
numpy.dot(x, y, out=None)
Parametri
Ovdje,
x, y: ulazni nizovi. x i y trebaju biti 1D ili 2D za np.dot() funkcionirati kao skalarni produkt ili množenje matrica.
van: neobavezni izlazni argument koji se koristi za bilježenje rezultata. U suprotnom, vraća se ndarray.
Povratak
Funkcija numpy.dot() vraća skalarni produkt dvaju nizova x i yVraća skalar kada su oba 1D, inače vraća niz. Ako out je zadan, taj niz se vraća.
podiže
Skakav proizvod u Python podiže ValueError ako je posljednja dimenzija x ne odgovara pretposljednjoj dimenziji y.
Primjer:
## 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)
Izlaz:
14
Množenje matrice u Python
NumPy matmul() Funkcija vraća umnožak matrica dvaju nizova. Evo kako to funkcionira.
1) Za 2D nizove vraća normalni matrični produkt.
2) Za dimenzije veće od 2, produkt se tretira kao stog matrica.
3) 1D niz se prvo promovira u matricu, a zatim se izračunava produkt.
Infiks @ operater, dostupan od Python 3.5 je skraćenica za matmul i široko se koristi u modernom kodu.
Sintaksa:
numpy.matmul(x, y, out=None)
Ovdje,
x, y: ulazni nizovi. Skalari nisu dopušteni.
van: neobavezni parametar. Obično se izlaz pohranjuje u ndarray.
Primjer:
Na isti način možete izračunati množenje matrica pomoću 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)
Izlaz:
array([[19, 22], [43, 50]])
determinanta
Ako trebate izračunati determinantu matrice, koristite np.linalg.det()NumPy se brine o dimenzijama umjesto vas.
Primjer:
## Determinant 2*2 matrix ### 5*8-7*6 np.linalg.det(i)
Izlaz:
-2.000000000000005
Objašnjenje NumPy emitiranja
Emitiranje je pravilo koje omogućuje NumPy-ju da izvodi aritmetičke operacije na nizovima različitih oblika bez kopiranja podataka. Kada dodate skalar 1D vektoru ili 1D vektor 2D matrici, NumPy rasteže manji operand duž nedostajućih osi tako da se oblici poravnaju. Time se izbjegava eksplicitno Python petlje i jedan je od glavnih razloga zašto se NumPy kod čini brzim i konciznim.
Dva oblika su kompatibilna za emitiranje kada su, u usporedbi s desna na lijevo, svaki par dimenzija jednak ili je jedna od njih jednaka 1. Na primjer, matrica oblika (3, 4) emitira prema redu oblika (4,) ili stupac u obliku (3, 1)Ista logika pokreće normalizaciju u strojnom učenju, gdje podvrgavatetracvektor srednje vrijednosti po značajki iz serije uzoraka u jednom retku. Broadcasting je također konceptualni model koji koriste tenzorske biblioteke kao što je PyTorch, TensorFlow i JAX, tako da se pravila koja ovdje naučite prenose izravno u GPU kod.
Kako NumPy pokreće umjetnu inteligenciju i strojno učenje
NumPy se nalazi iza gotovo svakog modernog Python AI stog. PyTorch tenzori, TensorFlow eager tenzori i JAX nizovi pružaju isto emitiranje, rezanje i preoblikovanje.ping API koji ste naučili na NumPy ndarrays. Mnogi tutorijali i dalje ubacuju unaprijed obrađene NumPy nizove u petlje za treniranje modela, a frameworkovi ih prihvaćaju bez konverzije.
Tri konkretna obrasca pokazuju kako se NumPy povezuje s umjetnom inteligencijom danas. Prvo, podatkovni inženjeri oblikuju sirove značajke u NumPy polja prije nego što ih predaju scikit-learn cjevovodima ili skupovima podataka Hugging Face. Drugo, istraživači koriste NumPy kao osnovu CPU-a, a zatim ga zamjenjuju CuPy-jem, koji pruža gotovo identičan API, ali radi na NVIDIA GPU-ima putem CUDA-e. Treće, JAX se temelji na NumPy API-ju kako bi dodao automatsku diferencijaciju i kompilaciju "just-in-time", tako da isti kod koji se izvodi na prijenosnom računalu može raditi na TPU-ima u oblaku. Zaključak je da se vještine rada s nizovima koje izgradite s NumPy-jem prenose u svaki veći skup alata za duboko učenje, što ovaj vodič čini korisnim korakom na putu razvoja umjetne inteligencije.

