- Kas yra „Python NumPy“ paketas?
- „NumPy“ masyvai
- Skirtingos operacijos, kurias galima atlikti per „NumPy“ masyvus
- Dar keletas specialių funkcijų
Kas yra „Python NumPy“ paketas?
Paprasčiau tariant, „NumPy“ reiškia „Numerical Python“ ir tai, ką jis siekia įvykdyti, leidžia labai lengvai ir intuityviai atlikti sudėtingas skaitmenines operacijas, atliekamas su N matmenų masyvo objektais. Tai yra pagrindinė biblioteka, naudojama mokslinis skaičiavimas, su funkcijomis, atliekamomis tiesinėms algebrinėms ir statistinėms operacijoms atlikti.
Viena iš svarbiausių (ir patraukliausių) „NumPy“ sąvokų yra N matmenų masyvo objektų naudojimas. Šį masyvą galime laikyti tik a eilučių ir stulpelių kolekcija, kaip ir „MS-Excel“ failas. Galima konvertuoti „Python“ sąrašą į „NumPy“ masyvą ir valdyti jame funkcijas.

„NumPy Array“ vaizdavimas
Prieš pradėdami tik pastabą, mes naudojame virtualią aplinką šioje pamokoje, kurią padarėme naudodami šią komandą:
python -m virtualenv numpyšaltinio numpy / bin / aktyvuoti
Kai virtuali aplinka bus aktyvi, mes galime įdiegti „Numpy“ biblioteką virtualioje aplinkoje, kad būtų galima vykdyti toliau sukurtus pavyzdžius:
„pip install numpy“Mes matome kažką panašaus, kai vykdome pirmiau nurodytą komandą:
Greitai patikrinkime, ar „NumPy“ paketas buvo tinkamai įdiegtas, naudodami šį trumpą kodo fragmentą:
importuoti numerį kaip npa = np.masyvas ([1,2,3])
spausdinti (a)
Kai paleisite pirmiau nurodytą programą, turėtumėte pamatyti šį išvestį:
Su „NumPy“ taip pat galime turėti daugialypius matricas:
multi_dimension = np.masyvas ([(1, 2, 3), (4, 5, 6)])spausdinti (multi_dimension)
Tai sukurs tokią produkciją:
[[1 2 3][4 5 6]]
Taip pat galite naudoti „Anaconda“, kad paleistumėte šiuos pavyzdžius, kurie yra lengvesni, ir tai mes naudojome aukščiau. Jei norite jį įdiegti savo kompiuteryje, peržiūrėkite pamoką, kurioje aprašyta „Kaip įdiegti„ Anaconda Python “į„ Ubuntu 18 “.04 LTS “ir pasidalykite savo atsiliepimais. Dabar pereikime prie įvairių tipų operacijų, kurias galima atlikti naudojant „Python NumPy“ masyvus.
„NumPy“ masyvų naudojimas virš „Python“ sąrašų
Svarbu paklausti, kad kai „Python“ jau turi sudėtingą duomenų struktūrą keliems elementams laikyti, kodėl mums apskritai reikalingi „NumPy“ masyvai? „NumPy“ masyvai yra teikiama pirmenybė prieš „Python“ sąrašus dėl šių priežasčių:
- Patogu naudoti matematinėms ir skaičiavimo operacijoms dėl suderinamų „NumPy“ funkcijų
- Jie yra daug greitesni dėl to, kaip viduje saugo duomenis
- Mažiau atminties
Leisk mums įrodyti, kad „NumPy“ masyvai užima mažiau atminties. Tai galima padaryti parašius labai paprastą „Python“ programą:
importuoti numerį kaip npimporto laikas
importuoti sistemas
python_list = diapazonas (500)
spausdinti (sys.getsizeof (1) * len (python_list))
numpy_arr = np.apelsinas (500)
spausdinti (numpy_arr.dydis * numpy_arr.prekės dydis)
Vykdydami pirmiau nurodytą programą, gausime tokį išėjimą:
14000 m4000
Tai rodo, kad to paties dydžio sąrašas yra daugiau nei 3 kartus dydžio, palyginti su to paties dydžio „NumPy“ masyvu.
„NumPy“ operacijų atlikimas
Šiame skyriuje greitai apžvelkime operacijas, kurias galima atlikti su „NumPy“ masyvais.
Masyvo matmenų paieška
Kadangi „NumPy“ masyvas gali būti naudojamas bet kurioje matmenų erdvėje duomenims laikyti, masyvo matmenį galime rasti naudodami šį kodo fragmentą:
importuoti numerį kaip npnumpy_arr = np.masyvas ([(1,2,3), (4,5,6)])
spausdinti (numpy_arr.ndim)
Išvestį matysime kaip „2“, nes tai yra dvimatis masyvas.
Masyvo elementų duomenų tipo paieška
Bet kokio tipo duomenims laikyti galime naudoti „NumPy“ masyvą. Dabar sužinokime masyvo duomenų tipą:
other_arr = np.masyvas ([('baimė', 'b', 'katė')])spausdinti (other_arr.dtype)
numpy_arr = np.masyvas ([(1,2,3), (4,5,6)])
spausdinti (numpy_arr.dtype)
Pirmiau pateiktame kodo fragmente naudojome skirtingo tipo elementus. Štai išvestis, kurią parodys šis scenarijus:
Tai atsitinka, nes simboliai aiškinami kaip „unicode“ simboliai, o antrasis yra akivaizdus.
Formuokite masyvo elementus
Jei „NumPy“ masyvą sudaro 2 eilutės ir 4 stulpeliai, jį galima pertvarkyti, kad jame būtų 4 eilutės ir 2 stulpeliai. Parašykime paprastą to paties kodo fragmentą:
originalas = np.masyvas ([('1', 'b', 'c', '4'), ('5', 'f', 'g', '8')])spausdinti (originalas)
pertvarkytas = originalus.pertvarkyti (4, 2)
spausdinti (pertvarkytas)
Vykdydami pirmiau pateiktą kodo fragmentą, gausime šią išvestį su abiem matricomis, atspausdintomis ekrane:
[['1' 'b' 'c' '4']['5' 'f' 'g' '8']]
[['1' 'b']
['c' '4']
['5' 'f']
['g' '8']]
Atkreipkite dėmesį, kaip „NumPy“ rūpinosi elementų perkėlimu ir susiejimu su naujomis eilutėmis.
Matematinės masyvo elementų operacijos
Matematines operacijas su masyvo elementais atlikti yra labai paprasta. Pradėsime parašydami paprastą kodo fragmentą, kad sužinotumėte maksimalų, minimalų ir visų masyvo elementų pridėjimą. Štai kodo fragmentas:
numpy_arr = np.masyvas ([(1, 2, 3, 4, 5)])spausdinti (numpy_arr.maks. ())
spausdinti (numpy_arr.min. ())
spausdinti (numpy_arr.suma())
spausdinti (numpy_arr.vidurkis ())
spausdinti (np.sqrt (numpy_arr))
spausdinti (np.standartinis (numpy_arr))
Paskutinėse 2 aukščiau pateiktose operacijose mes taip pat apskaičiavome kiekvieno masyvo elemento kvadratinę šaknį ir standartinį nuokrypį. Pirmiau pateiktame fragmente bus pateiktas toks išvestis:
51
15
3.0
[[1. 1.41421356 1.73205081 2. 2.23606798]]
1.4142135623730951
„Python“ sąrašų konvertavimas į „NumPy“ masyvus
Net jei naudojate „Python“ sąrašus esamose programose ir nenorite pakeisti viso to kodo, bet vis tiek norite naudoti „NumPy“ masyvus naujajame kode, naudinga žinoti, kad galime lengvai konvertuoti „Python“ sąrašą į „NumPy“ masyvą. Štai pavyzdys:
# Sukurkite 2 naujus aukščio ir svorio sąrašusaukštis = [2.37, 2.87, 1.52, 1.51, 1.70, 2.05]
svoris = [91.65, 97.52, 68.25, 88.98, 86.18, 88.45]
# Sukurkite 2 numerių matricas iš aukščio ir svorio
np_height = np.masyvas (aukštis)
np_ weight = np.masyvas (svoris)
Tiesiog norėdami patikrinti, dabar galime atsispausdinti vieno iš kintamųjų tipą:
spausdinti (tipas (np_height))Tai parodys:
Dabar galime atlikti visų elementų matematines operacijas vienu metu. Pažiūrėkime, kaip galime apskaičiuoti žmonių KMI:
# Apskaičiuokite BMIbmi = np_weight / np_height ** 2
# Atspausdinkite rezultatą
spausdinti (bmi)
Tai parodys visų žmonių KMI, apskaičiuotą elementais:
[16.31682957 11.8394056 29.54033934 39.02460418 29.8200692 21.04699584]Ar ne taip lengva ir patogu? Mes netgi galime lengvai filtruoti duomenis su sąlyga vietoj indekso kvadratiniuose skliaustuose:
BMI [BMI> 25]Tai suteiks:
masyvas ([29.54033934, 39.02460418, 29.8200692])Sukurkite atsitiktines sekas ir pasikartojimus naudodami „NumPy“
Kadangi „NumPy“ yra daugybė funkcijų, leidžiančių sukurti atsitiktinius duomenis ir sutvarkyti juos reikalinga forma, „NumPy“ masyvai daug kartų naudojami kuriant bandymų duomenų rinkinį daugelyje vietų, įskaitant derinimo ir bandymo tikslus. Pvz., Jei norite sukurti masyvą nuo 0 iki n, galime naudoti „arange“ (atkreipkite dėmesį į vieną „r“) kaip pateiktą fragmentą:
spausdinti (np.apelsinas (5))Tai grąžins išvestį kaip:
[0 1 2 3 4]Ta pati funkcija gali būti naudojama norint pateikti mažesnę vertę, kad masyvas prasidėtų nuo kitų skaičių nei 0:
spausdinti (np.apelsinas (4, 12))Tai grąžins išvestį kaip:
[4 5 6 7 8 9 10 11]Skaičiai neturi būti ištisiniai, jie gali praleisti taisymo veiksmą, pvz .:
spausdinti (np.aranas (4, 14, 2)Tai grąžins išvestį kaip:
[4 6 8 10 12]Skaičius taip pat galime gauti mažėjančia tvarka su neigiama praleidimo verte:
spausdinti (np.apelsinas (14, 4, -1))Tai grąžins išvestį kaip:
[14 13 12 11 10 9 8 7 6 5]Naudojant „linspace“ metodą galima finansuoti n skaičių tarp x ir y su vienoda erdve, čia yra to paties kodo fragmentas:
np.„linspace“ (pradžia = 10, sustojimas = 70, skaičius = 10, tipo tipas = int)Tai grąžins išvestį kaip:
masyvas ([10, 16, 23, 30, 36, 43, 50, 56, 63, 70])Atkreipkite dėmesį, kad išvesties elementai nėra vienodai išdėstyti. „NumPy“ daro viską, kad tai padarytų, tačiau jums nereikia juo pasikliauti, nes jis apvalinamas.
Galiausiai pažiūrėkime, kaip galime sukurti atsitiktinių sekų rinkinį naudodami „NumPy“, kuri yra viena iš dažniausiai naudojamų funkcijų testavimo tikslais. „NumPy“ perduosime skaičių diapazoną, kuris bus naudojamas kaip pradinis ir paskutinis atsitiktinių skaičių taškas:
spausdinti (np.atsitiktinis.randintas (0, 10, dydis = [2,2]))Pirmiau pateiktas fragmentas sukuria 2–2 matmenų „NumPy“ masyvą, kuriame bus atsitiktiniai skaičiai nuo 0 iki 10. Štai pavyzdžio išvestis:
[[0 4][8 3]]
Atkreipkite dėmesį, kad skaičiai yra atsitiktiniai, išvestis gali skirtis net ir tuo pačiu mašina atliekant 2 bandymus.
Išvada
Šioje pamokoje apžvelgėme įvairius šios skaičiavimo bibliotekos aspektus, kuriuos galime naudoti kartu su „Python“, norėdami apskaičiuoti paprastas ir sudėtingas matematines problemas, kurios gali kilti įvairiais naudojimo atvejais. NumPy yra viena iš svarbiausių skaičiavimo bibliotekų, kai reikia duomenų inžinerija ir skaičiaus skaičiavimas, tikrai įgūdžiai, kuriuos turime turėti savo dirže.
Prašome pasidalinti savo atsiliepimais apie pamoką „Twitter“ su @sbmaggarwal ir @LinuxHint.