Znanost o podacima

Vodič za Python NumPy

Vodič za Python NumPy
U ovoj ćemo lekciji o Python NumPy knjižnici pogledati kako nam ova knjižnica omogućuje upravljanje moćnim N-dimenzionalnim objektima niza sa sofisticiranim funkcijama prisutnim za manipulaciju i rad s tim nizovima. Da bi ova lekcija bila cjelovita, obradit ćemo sljedeće odjeljke:

Što je Python NumPy paket?

Jednostavno rečeno, NumPy je kratica od "Numerički Python" i to je ono što želi ispuniti, kako bi se omogućile složene numeričke operacije izvedene na objektima N-dimenzionalnih nizova vrlo lako i na intuitivan način. To je temeljna knjižnica koja se koristi u znanstveno računanje, s funkcijama prisutnim za izvođenje linearnih algebarskih operacija i statističkih operacija.

Jedan od najtemeljnijih (i najatraktivnijih) koncepata za NumPy je njegova upotreba N-dimenzionalnih polja. Ovaj niz možemo uzeti kao samo zbirka redaka i stupaca, baš kao MS-Excel datoteka. Moguće je pretvoriti Python popis u NumPy niz i upravljati funkcijama preko njega.

Zastupljenost NumPy niza

Samo napomenu prije početka, za ovu lekciju koristimo virtualno okruženje koje smo napravili sljedećom naredbom:

python -m virtualenv numpy
izvor numpy / bin / activate

Jednom kada je virtualno okruženje aktivno, možemo instalirati numpy knjižnicu unutar virtualnog okruženja tako da se mogu izvršavati primjeri koje sljedeći kreiramo:

pip instalirati numpy

Otprilike ovako vidimo kad izvršimo gornju naredbu:

Brzo provjerimo je li paket NumPy pravilno instaliran sa sljedećim kratkim isječkom koda:

uvoz numpy kao np
a = np.niz ([1,2,3])
ispis (a)

Jednom kada pokrenete gornji program, trebali biste vidjeti sljedeći izlaz:

Također možemo imati višedimenzionalne nizove s NumPy:

multi_dimenzija = np.niz ([(1, 2, 3), (4, 5, 6)])
ispis (multi_dimenzija)

To će proizvesti izlaz poput:

[[1 2 3]
[4 5 6]]

Anacondu možete koristiti i za pokretanje ovih primjera, što je lakše i to je ono što smo gore koristili. Ako ga želite instalirati na svoj stroj, pogledajte lekciju koja opisuje „Kako instalirati Anaconda Python na Ubuntu 18.04 LTS ”i podijelite svoje povratne informacije. Krenimo sada na razne vrste operacija koje se mogu izvoditi s Python NumPy nizovima.

Korištenje NumPy polja preko Python popisa

Važno je pitati kada Python već ima sofisticiranu strukturu podataka koja sadrži više stavki, zašto nam uopće trebaju NumPy nizovi? Nizovi NumPy su preferirana nad Pythonovim popisima iz sljedećih razloga:

Pusti nas dokazati da nizi NumPy zauzimaju manje memorije. To se može učiniti pisanjem vrlo jednostavnog Python programa:

uvoz numpy kao np
vrijeme uvoza
import sys
python_list = raspon (500)
ispis (sys.getsizeof (1) * len (python_list))
numpy_arr = np.narančasto (500)
ispis (numpy_arr.veličina * numpy_arr.veličina predmeta)

Kada pokrenemo gornji program, dobit ćemo sljedeći izlaz:

14000
4000

To pokazuje da je isti popis veličina više od 3 puta u veličini u usporedbi s nizom NumPy iste veličine.

Izvođenje NumPy operacija

U ovom ćemo odjeljku na brzinu pregledati operacije koje se mogu izvesti na NumPy nizovima.

Pronalaženje dimenzija u nizu

Kako se niz NumPy može koristiti u bilo kojem dimenzionalnom prostoru za držanje podataka, dimenziju niza možemo pronaći sa sljedećim isječkom koda:

uvoz numpy kao np
numpy_arr = np.niz ([(1,2,3), (4,5,6)])
ispis (numpy_arr.ndim)

Izlaz ćemo vidjeti kao "2" jer je ovo dvodimenzionalni niz.

Pronalaženje tipa podataka stavki u polju

Niz NumPy možemo koristiti za držanje bilo koje vrste podataka. Otkrijmo sada vrstu podataka podataka koje niz sadrži:

ostalo_arr = np.niz ([('strahopoštovanje', 'b', 'mačka')])
ispis (other_arr.dtip)
numpy_arr = np.niz ([(1,2,3), (4,5,6)])
ispis (numpy_arr.dtip)

U gornjem isječku koda koristili smo različite vrste elemenata. Evo rezultata koje će pokazati ova skripta:

int64

To se događa jer se znakovi tumače kao unicode znakovi, a drugi je očit.

Preoblikujte stavke niza

Ako se niz NumPy sastoji od 2 retka i 4 stupca, može se preoblikovati tako da sadrži 4 retka i 2 stupca. Napišimo jednostavan isječak koda za isto:

izvornik = np.niz ([('1', 'b', 'c', '4'), ('5', 'f', 'g', '8')])
ispis (izvornik)
preoblikovano = izvorno.preoblikovati (4, 2)
ispis (preoblikovano)

Jednom kada pokrenemo gornji isječak koda, dobit ćemo sljedeći izlaz s oba polja ispisana na zaslon:

[['1' 'b' 'c' '4']
['5' 'f' 'g' '8']]
[['1' 'b']
['c' '4']
['5' 'f']
['g' '8']]

Primijetite kako se NumPy pobrinuo za prebacivanje i pridruživanje elemenata novim redovima.

Matematičke operacije nad stavkama niza

Izvođenje matematičkih operacija na stavkama niza vrlo je jednostavno. Započet ćemo pisanjem jednostavnog isječka koda kako bismo saznali maksimum, minimum i dodavanje svih stavki niza. Evo isječka koda:

numpy_arr = np.niz ([(1, 2, 3, 4, 5)])
ispis (numpy_arr.maks. ())
ispis (numpy_arr.min ())
ispis (numpy_arr.iznos())
ispis (numpy_arr.znači ())
ispis (np.sqrt (numpy_arr))
ispis (np.std (numpy_arr))

U posljednje 2 gornje operacije izračunali smo i kvadratni korijen i standardno odstupanje svake stavke niza. Gornji isječak pružit će sljedeći izlaz:

5
1
15
3.0
[[1.   1.41421356 1.73205081 2.   2.23606798]]
1.4142135623730951

Pretvaranje Python popisa u NumPy nizove

Čak i ako koristite Python popise u postojećim programima i ne želite mijenjati sav taj kôd, ali i dalje želite koristiti NumPy nizove u novom kodu, dobro je znati da Python možemo lako pretvoriti popis u niz NumPy. Evo primjera:

# Stvorite 2 nova popisa visine i težine
visina = [2.37, 2.87, 1.52, 1.51, 1.70, 2.05]
težina = [91.65, 97.52, 68.25, 88.98, 86.18, 88.45]
# Stvorite 2 numpy niza od visine i težine
np_height = np.niz (visina)
np_težina = np.niz (težina)

Samo da provjerimo, sada možemo ispisati vrstu jedne od varijabli:

ispis (vrsta (np_height))

I ovo će pokazati:

Sada možemo izvršavati matematičke operacije nad svim stavkama odjednom. Pogledajmo kako možemo izračunati BMI ljudi:

# Izračunaj bmi
bmi = np_weight / np_height ** 2
# Ispišite rezultat
ispis (bmi)

Ovo će pokazati BMI svih ljudi izračunatih po elementima:

[16.31682957 11.8394056 29.54033934 39.02460418 29.8200692 21.04699584]

Nije li to lako i zgodno? Čak možemo lako filtrirati podatke uz uvjet umjesto indeksa unutar uglatih zagrada:

bmi [bmi> 25]

To će dati:

niz ([29.54033934, 39.02460418, 29.8200692])

Stvorite slučajne sekvence i ponavljanja pomoću NumPy-a

Uz brojne značajke prisutne u NumPyu za stvaranje slučajnih podataka i njihovo raspoređivanje u potrebnom obliku, NumPy nizovi se mnogo puta koriste za generiranje skupa podataka na mnogim mjestima, uključujući uklanjanje pogrešaka i testiranje. Na primjer, ako želite stvoriti niz od 0 do n, možemo koristiti arange (imajte na umu jedan 'r') poput datog isječka:

ispis (np.narančasto (5))

Ovo će vratiti izlaz kao:

[0 1 2 3 4]

Ista se funkcija može koristiti za pružanje niže vrijednosti tako da niz započinje s brojevima koji nisu 0:

ispis (np.rasporedi (4, 12))

Ovo će vratiti izlaz kao:

[4 5 6 7 8 9 10 11]

Brojevi ne moraju biti kontinuirani, oni mogu preskočiti korak popravljanja poput:

ispis (np.rasporedi (4, 14, 2))

Ovo će vratiti izlaz kao:

[4 6 8 10 12]

Brojeve također možemo dobiti u opadajućem redoslijedu s negativnom vrijednošću preskakanja:

ispis (np.rasporedi (14, 4, -1))

Ovo će vratiti izlaz kao:

[14 13 12 11 10 9 8 7 6 5]

Moguće je financirati n brojeva između x i y jednakim razmakom metodom linspace, ovdje je isječak koda za isti:

np.Linspace (početak = 10, zaustavljanje = 70, num = 10, dtype = int)

Ovo će vratiti izlaz kao:

niz ([10, 16, 23, 30, 36, 43, 50, 56, 63, 70])

Imajte na umu da izlazne stavke nisu jednako raspoređene. NumPy čini sve da to učini, ali ne trebate se na to oslanjati kao što je zaokruživanje.

Na kraju, pogledajmo kako možemo generirati skup slučajnih nizova pomoću NumPy-a koji je jedna od najčešće korištenih funkcija u svrhu testiranja. NumPy-u ćemo proslijediti niz brojeva koji će se koristiti kao početna i konačna točka za slučajne brojeve:

ispis (np.slučajno.randint (0, 10, veličina = [2,2]))

Gornji isječak stvara dvodimenzionalni NumPy niz koji će sadržavati slučajne brojeve između 0 i 10. Evo uzorka rezultata:

[[0 4]
[8 3]]

Imajte na umu kako su brojevi slučajni, izlaz se može razlikovati čak i između 2 pokretanja na istom stroju.

Zaključak

U ovoj smo lekciji pogledali različite aspekte ove računalne knjižnice koje možemo koristiti s Pythonom za izračunavanje jednostavnih, ali i složenih matematičkih problema koji se mogu pojaviti u različitim slučajevima korištenja. NumPy je jedna od najvažnijih računalnih knjižnica kada je riječ o podatkovno inženjerstvo i izračunavanje numeričkih datuma, definitivno vještina koju trebamo imati ispod pojasa.

Molimo podijelite svoje povratne informacije o lekciji na Twitteru s @sbmaggarwal i @LinuxHint.

Vulkan za korisnike Linuxa
Sa svakom novom generacijom grafičkih kartica vidimo da programeri igara pomiču granice grafičke vjernosti i dolaze na korak od fotorealizma. No, bez ...
OpenTTD vs Simutrans
Stvaranje vlastite simulacije prijevoza može biti zabavno, opuštajuće i izuzetno primamljivo. Zbog toga morate isprobati što više igara kako biste pro...
Vodič za OpenTTD
OpenTTD je jedna od najpopularnijih igara za poslovnu simulaciju. U ovoj igri morate stvoriti prekrasan prijevoznički posao. Međutim, počet ćete u poč...