Python NumPy vodič za početnike: učite na primjerima
U čemu je NumPy Python?
numpy je biblioteka otvorenog koda dostupna u Python, koji pomaže u matematičkom, znanstvenom, inženjerskom i podatkovnom programiranju. To je vrlo korisna biblioteka za izvođenje matematičkih i statističkih operacija Python. Savršeno radi za višedimenzionalne nizove i množenje matrica. Lako se integrira sa C/C++ i Fortran.
Za svaki znanstveni projekt, NumPy je alat koji treba znati. Napravljen je za rad s N-dimenzionalnim nizom, linearnom algebrom, slučajnim brojevima, Fourierovom transformacijom itd.
NumPy je programski jezik koji se bavi višedimenzionalnim nizovima i matricama. Povrh nizova i matrica, NumPy podržava veliki broj matematičkih operacija. U ovom ćemo dijelu pregledati bitne funkcije koje trebate znati za poduku o 'TensorFlow'.
Zašto koristiti NumPy?
NumPy je memorijski učinkovit, što znači da može obraditi ogromnu količinu podataka dostupnijih od bilo koje druge knjižnice. Osim toga, NumPy je vrlo zgodan za rad, posebno za množenje i preoblikovanje matrica. Povrh svega, NumPy je brz. Zapravo, TensorFlow i Scikit uče koristiti niz NumPy za izračunavanje množenja matrica u pozadini.
Kako instalirati NumPy
Za instaliranje biblioteke NumPy pogledajte naš vodič Kako instalirati TensorFlow. NumPy je instaliran prema zadanim postavkama s Anacondom.
U udaljenom slučaju, NumPy nije instaliran-
NumPy možete instalirati pomoću Anaconde:
conda install -c anaconda numpy
- In Jupyter bilježnica:
import sys !conda install --yes --prefix {sys.prefix} numpy
Uvezite NumPy i provjerite verziju
Naredba za uvoz numpyja je:
import numpy as np
Gornji kod preimenuje imenski prostor Numpy u np. To nam dopušta da pred Numpy funkciju, metode i atribute stavimo ” np ” umjesto da upišemo ” numpy.” To je standardni prečac koji ćete pronaći u numpy literaturi
Da biste provjerili instaliranu verziju NumPy-ja, upotrijebite naredbu u nastavku:
print (np.__version__)
Izlaz:
1.18.0
Što je Python NumPy polje?
NumPy nizovi su pomalo slični Python liste, ali istovremeno i vrlo različite. Za vas koji ste novi u ovoj temi, razjasnimo što je to točno i za što je dobro.
Kao što naziv na neki način odaje, NumPy polje središnja je podatkovna struktura numpy knjižnice. Naziv knjižnice zapravo je skraćenica za “Numeric Python” ili “Brojčani Python".
Stvaranje NumPy polja
Najjednostavniji način za stvaranje niza u Numpyju je korištenje Python Popis
myPythonList = [1,9,8,3]
Za pretvaranje python liste u numpy polje pomoću objekta np.array.
numpy_array_from_list = np.array(myPythonList)
Za prikaz sadržaja popisa
numpy_array_from_list
Izlaz:
array([1, 9, 8, 3])
U praksi, nema potrebe deklarirati a Python Popis. Operacija se može kombinirati.
a = np.array([1,9,8,3])
BILJEŠKA: Numpy dokumentacija navodi korištenje np.ndarray za stvaranje polja. Međutim, ovo je preporučena metoda.
Također možete stvoriti niz numpy iz Tuple.
Matematički Operacije na polju
Na nizu možete izvoditi matematičke operacije poput zbrajanja, oduzimanja, dijeljenja i množenja. Sintaksa je naziv niza iza kojeg slijedi operacija (+.-,*,/) nakon čega slijedi operand
Primjer:
numpy_array_from_list + 10
Izlaz:
array([11, 19, 18, 13])
Ova operacija dodaje 10 svakom elementu niza numpy.
Oblik niza
Možete provjeriti oblik niza s oblikom objekta ispred kojeg stoji naziv niza. Na isti način možete provjeriti vrstu s dtypes.
import numpy as np a = np.array([1,2,3]) print(a.shape) print(a.dtype) (3,) int64
Cijeli broj je vrijednost bez decimale. Ako stvorite niz s decimalnim zarezom, tada će se tip promijeniti u float.
#### Different type b = np.array([1.1,2.0,3.2]) print(b.dtype) float64
2 dimenzijski niz
Možete dodati dimenziju sa "," zarezom
Imajte na umu da mora biti unutar zagrada []
### 2 dimension c = np.array([(1,2,3), (4,5,6)]) print(c.shape) (2, 3)
3 dimenzijski niz
Viša dimenzija može se konstruirati na sljedeći 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 | Kodirati |
---|---|
Stvori niz | niz([1,2,3]) |
ispisati oblik | niz([.]).oblik |
Što je numpy.zeros()?
numpy.nule() ili np.nule Python koristi se za stvaranje matrice pune nula. numpy.zeros() in Python može se koristiti kada inicijalizirate težine tijekom prve iteracije u TensorFlowu i drugim statističkim zadacima.
Sintaksa funkcije numpy.zeros().
numpy.zeros(shape, dtype=float, order='C')
Python numpy.zeros() Parametri
Ovdje,
- Oblikujte: je oblik numpy niza nula
- Dvrsta: je tip podataka u numpy nulama. Nije obavezno. Zadana vrijednost je float64
- Kako: Zadano je C što je bitan stil retka za numpy.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(). koristi se za stvaranje matrice pune jedinica. numpy.ones() u Python može se koristiti kada inicijalizirate težine tijekom prve iteracije u TensorFlowu i drugim statističkim zadacima.
Python numpy.ones() Sintaksa
numpy.ones(shape, dtype=float, order='C')
Python numpy.ones() parametri
Ovdje,
- Oblikujte: je oblik np.one Python Poredak
- Dvrsta: je tip podataka u numpy ones. Nije obavezno. Zadana vrijednost je float64
- Kako: Zadano je C što je osnovni stil retka.
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 funkcija se koristi za oblikovanje niza bez mijenjanja njegovih podataka. U nekim ćete slučajevima možda trebati preoblikovati podatke iz širokih u dugačke. Za to možete koristiti funkciju np.reshape.
Sintaksa np.reshape()
numpy.reshape(a, newShape, order='C')
Ovdje,
a: Niz koji želite preoblikovati
noviOblik: Nove želje oblikuju
Kako: Zadano je C što je osnovni stil retka.
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 funkcija se koristi za vraćanje kopije niza u jednoj dimenziji. Kada imate posla s nekom neuronskom mrežom kao što je convnet, morate spljoštiti niz. Za to možete koristiti funkcije np.flatten().
Sintaksa np.flatten()
numpy.flatten(order='C')
Ovdje,
Kako: Zadano je C što je osnovni stil retka.
Primjer NumPy Flatten
e.flatten()
Izlaz:
array([1, 2, 3, 4, 5, 6])
U čemu je numpy.hstack(). Python?
Numpy.hstack je funkcija u Python koji se koristi za horizontalno slaganje nizova ulaznih nizova kako bi se napravio jedan niz. Pomoću funkcije hstack() možete vodoravno dodavati podatke. To je vrlo zgodna funkcija u NumPyju.
Proučimo hstack Python s primjerom:
Primjer:
## Horitzontal 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 funkcija u Python koji se koristi za okomito slaganje nizova ulaznih nizova kako bi se napravio jedan niz. Pomoću funkcije vstack() možete okomito dodati podatke.
Proučimo to na primjeru:
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 vstack i hstack, naučimo primjer za generiranje slučajnih brojeva u NumPy.
Generiraj nasumično Numbers koristeći NumPy
Za generiranje nasumičnih brojeva za Gaussovu distribuciju upotrijebite:
numpy.random.normal(loc, scale, size)
Ovdje,
- Loc: sredstvo. Središte distribucije
- Skala: standardna devijacija.
- Veličina: broj povrata
Primjer:
## Generate random nmber from 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 iscrta, distribucija će biti slična sljedećem dijagramu
Funkcija NumPy Asarray
Funkcija asarray() koristi se kada želite pretvoriti unos u polje. Ulaz može biti lista, tuple, ndarray, itd.
Sintaksa:
numpy.asarray(data, dtype=None, order=None)[source]
Ovdje,
datum: Podaci koje želite pretvoriti u niz
dtype: Ovo je neobavezan argument. Ako nije navedeno, vrsta podataka se zaključuje iz ulaznih podataka
Kako: Zadano je C što je osnovni stil retka. Druga opcija je F (Fortan stil)
Primjer:
Razmotrite sljedeću 2-D matricu s četiri retka i četiri stupca ispunjena s 1
import numpy as np A = np.matrix(np.ones((4,4)))
Ako želite promijeniti vrijednost matrice, ne možete. Razlog je što nije moguće promijeniti kopiju.
np.array(A)[2]=2 print(A) [[1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.]]
Matrica je nepromjenjiva. Možete koristiti asarray ako želite dodati izmjene u izvornom nizu. Da vidimo hoće li se dogoditi bilo kakva promjena kada želite promijeniti vrijednost trećih redaka s vrijednošću 2.
np.asarray(A)[2]=2 print(A)
Objašnjenje koda:
np.asarray(A): pretvara matricu A u niz
[2]: odaberite treće retke
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 funkcija numpy koja vraća objekt ndarray koji sadrži ravnomjerno raspoređene vrijednosti unutar definiranog intervala. Na primjer, želite stvoriti vrijednosti od 1 do 10; možete koristiti np.arange() u Python funkcija.
Sintaksa:
numpy.arange(start, stop, step, dtype)
Python NumPy parametri rasporeda:
- početni plan: Početak intervala za np.arange in Python funkcija.
- zaustaviti: Kraj intervala.
- Korak: Razmak između vrijednosti. Zadani korak je 1.
- Dvrsta: je vrsta izlaza polja za NumPy arange in Python.
Primjer:
import numpy np np.arange(1, 11)
Izlaz:
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
Primjer:
Ako želite promijeniti korak u ovoj funkciji NumPy arange in Python na primjer, možete dodati treći broj u zagradi. Promijenit će korak.
import numpy np np.arange(1, 14, 4)
Izlaz:
array([ 1, 5, 9, 13])
Funkcija NumPy Linspace
Linspace daje ravnomjerno raspoređene uzorke.
Sintaksa:
numpy.linspace(start, stop, num, endpoint)
Ovdje,
- početni plan: Početna vrijednost niza
- zaustaviti: Krajnja vrijednost niza
- U: Broj uzoraka za generiranje. Zadano je 50
- Endpoint: Ako je True (zadano), stop je zadnja vrijednost. Ako je False, granična vrijednost nije uključena.
Primjer:
Na primjer, može se koristiti za stvaranje 10 vrijednosti od 1 do 5 ravnomjerno raspoređenih.
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 intervalu, krajnju točku možete postaviti na 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 brojeve s parnim razmacima na logaritamskoj ljestvici. Logspace ima 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 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 trivijalno s numpyjem. Izrezat ćemo matricu "e". Imajte na umu da, u Python, trebate upotrijebiti zagrade da vratite retke ili stupce
Primjer:
## Slice import numpy as np e = np.array([(1,2,3), (4,5,6)]) print(e) [[1 2 3] [4 5 6]]
Zapamtite da s numpy prvi niz/stupac počinje s 0.
## First column print('First row:', e[0]) ## Second col print('Second row:', e[1])
Izlaz:
First row: [1 2 3] Second row: [4 5 6]
In Python, kao i mnogi drugi jezici,
- Vrijednosti prije zareza označavaju retke
- Vrijednost na pravima označava stupce.
- Ako želite odabrati stupac, trebate dodati : 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 reda. Koristite : za odabir svih stupaca do drugog
## Second Row, two values print(e[1, :2]) [4 5]
Statističke funkcije u Python
NumPy ima dosta korisnih statističkih funkcija za pronalaženje minimuma, maksimuma, percentila standardne devijacije i varijance itd. iz danih elemenata u nizu. Funkcije su objašnjene na sljedeći način −
Numpy je opremljen robusnom statističkom funkcijom kako je navedeno u nastavku
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čke funkcije 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 produkt je moćna biblioteka za matrično računanje. Na primjer, možete izračunati točkasti umnožak pomoću np.dot. Numpy.dot product je točkasti umnožak a i b. numpy.dot() u Python rukuje 2D nizovima i izvodi množenje matrice.
Sintaksa:
numpy.dot(x, y, out=None)
Parametri
Ovdje,
x, y: Ulazni nizovi. x i y bi trebali biti 1-D ili 2-D da bi funkcija np.dot() radila
van: Ovo je izlazni argument za skalar 1-D polja koji treba vratiti. U suprotnom treba vratiti ndarray.
Povratak
Funkcija numpy.dot() u Python vraća točkasti umnožak dva niza x i y. Funkcija dot() vraća skalar ako su i x i y 1-D; inače vraća niz. Ako je dano 'out', ono se vraća.
podiže
Točkasti proizvod u Python pokreće iznimku ValueError ako posljednja dimenzija x nema istu veličinu kao pretposljednja dimenzija 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
Funkcija Numpy matmul() koristi se za vraćanje matričnog umnoška 2 polja. Evo kako to radi
1) 2-D nizovi, vraća normalan proizvod
2) Dimenzije > 2, proizvod se tretira kao hrpa matrice
3) 1-D niz se prvo promiče u matricu, a zatim se izračunava umnožak
Sintaksa:
numpy.matmul(x, y, out=None)
Ovdje,
x, y: Ulazni nizovi. skalari nisu dopušteni
van: Ovo je izborni parametar. Obično se izlaz pohranjuje u ndarray
Primjer:
Na isti način možete izračunati množenje matrica s np.matmul
### Matmul: matruc 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
Na kraju, ali ne manje važno, ako trebate izračunati determinantu, možete koristiti np.linalg.det(). Imajte na umu da numpy vodi računa o dimenziji.
Primjer:
## Determinant 2*2 matrix ### 5*8-7*6np.linalg.det(i)
Izlaz:
-2.000000000000005
rezime
- Python je biblioteka otvorenog koda dostupna u Python, koji pomaže u matematici, znanosti, inženjerstvu i programiranje znanosti o podacima.
- numpy.zeros() ili np.nule Python funkcija se koristi za stvaranje matrice pune nula.
- numpy.ones() u Python može se koristiti kada inicijalizirate težine tijekom prve iteracije u TensorFlowu i drugim statističkim zadacima.
- Python NumPy Reshape funkcija koristi se za oblikovanje niza bez mijenjanja njegovih podataka.
- Python Funkcija NumPy Flatten koristi se za vraćanje kopije niza u jednoj dimenziji.
- Numpy.hstack je funkcija u Python koji se koristi za vodoravno slaganje nizova ulaznih nizova kako bi se napravio jedan niz.
- Numpy.vstack je funkcija u Python koji se koristi za okomito slaganje nizova ulaznih nizova kako bi se napravio jedan niz.
- numpy.arange() je ugrađena numpy funkcija koja vraća objekt ndarray koji sadrži ravnomjerno raspoređene vrijednosti unutar definiranog intervala.
- Numpy.dot proizvod moćna je biblioteka za matrično izračunavanje.
- Funkcija Numpy matmul() koristi se za vraćanje matričnog umnoška 2 polja.