Python sąrašai yra masyvų pakaitalas, tačiau jie nesuteikia reikiamo našumo skaičiuojant didelius skaitinių duomenų rinkinius.
Norėdami išspręsti šią problemą, naudojame NumPy biblioteka Python. NumPy siūlo masyvo objektą, vadinamą ndarray . Jie yra panašūs į standartines Python sekas, tačiau skiriasi tam tikrais pagrindiniais veiksniais.
Kas yra NumPy masyvas?
„NumPy“ masyvas yra daugiamatė duomenų struktūra, kuri yra „Python“ mokslinio skaičiavimo pagrindas.
Visos masyvo reikšmės yra vienarūšės (to paties duomenų tipo).
Jie siūlo automatinį vektorizavimą ir transliavimą.
Jie užtikrina efektyvų atminties valdymą, ufuncs (universalios funkcijos), palaiko įvairius duomenų tipus ir yra lankstūs su indeksavimu ir pjaustymu.
Matmenys masyvuose
NumPy masyvai gali turėti kelis matmenis, todėl vartotojai gali saugoti duomenis daugiasluoksnėse struktūrose.
Masyvo matmenys:
| vardas | Pavyzdys |
| 0D (nulinis matmuo) | Skaliarinis – vienas elementas |
| 1D (vienmatis) | Vektorius – sveikųjų skaičių sąrašas. |
| 2D (dvimatis) | Matrica – duomenų lentelė |
| 3D (trimatis) | Tenzoras – spalvoto vaizdo saugojimas |
Sukurkite masyvo objektą
NumPy masyvo objektai leidžia mums dirbti su masyvais Python. Masyvo objektas vadinamas ndarray .
NumPy bibliotekos funkcija array() sukuria ndarray.
Python3
svm
import> numpy as np> arr>=> np.array([>1>,>2>,>3>,>4>,>5>,>6>])> |
>
>
Išvestis
[1,2,3,4,5,6]>
Taip pat galime sukurti „NumPy“ masyvą naudodami sąrašą ir „Tuple“.
Sukurkite NumPy masyvą iš sąrašo
Norėdami sukurti a ndarray, galite naudoti np slapyvardį sąrašą naudojant masyvo() metodą.
li = [1,2,3,4] numpyArr = np.array(li)>
arba
numpyArr = np.array([1,2,3,4])>
Sąrašas perduodamas array() metodui, kuris grąžina masyvą su tais pačiais elementais.
išsaugoti youtube video vlc
1 pavyzdys: Toliau pateiktame pavyzdyje parodyta, kaip inicijuoti masyvą iš sąrašo.
Python3
1 milijonas skaitmenimis
import> numpy as np> > li>=> [>1>,>2>,>3>,>4>]> numpyArr>=> np.array(li)> print>(numpyArr)> |
>
>
Išvestis:
[1 2 3 4]>
Gautas masyvas atrodo taip pat kaip sąrašas, bet yra NumPy objektas.
2 pavyzdys: Paimkime pavyzdį, kad patikrintume, ar numpyArr yra NumPy objektas, ar ne. Šiame pavyzdyje mes naudojame funkciją array() norėdami konvertuoti sąrašą į NumPy masyvą ir patikrinti, ar tai yra NumPy objektas, ar ne.
Python3
import> numpy as np> > li>=> [>1>,>2>,>3>,>4>]> numpyArr>=> np.array(li)> > print>(>'li ='>, li,>'and type(li) ='>,>type>(li))> print>(>'numpyArr ='>, numpyArr,>'and type(numpyArr) ='>,>type>(numpyArr))> |
>
>
Išvestis:
li = [1, 2, 3, 4] and type(li) = numpyArr = [1 2 3 4] and type(numpyArr) =>
Kaip matote, li yra sąrašo objektas, o numpyArr yra NumPy masyvo objektas.
Sukurkite NumPy masyvą iš kortelių
Galite pagaminti ndarray iš a kortele naudojant panašią sintaksę.
tup = (1,2,3,4) numpyArr = np.array(tup)>
arba
numpyArr = np.array((1,2,3,4))>
Šis pavyzdys iliustruoja, kaip sukurti masyvą iš eilės. Čia mes naudojame funkciją array() norėdami konvertuoti seką į NumPy masyvą.
Python3
chown komanda
import> numpy as np> > tup>=> (>1>,>2>,>3>,>4>)> numpyArr>=> np.array(tup)> > print>(>'tup ='>, tup,>'and type(tup) ='>,>type>(tup))> print>(>'numpyArr ='>, numpyArr,>'and type(numpyArr) ='>,>type>(numpyArr))> |
metodai java
>
>
Išvestis:
tup = (1, 2, 3, 4) and type(tup) = numpyArr = [1 2 3 4] and type(numpyArr) =>
Atminkite, kad numpyArr reikšmė išlieka tokia pati bet kuriai iš dviejų konversijų.
NumPy masyvai vs integruotos Python sekos
- Skirtingai nuo sąrašų, masyvai yra fiksuoto dydžio, o pakeitus masyvo dydį bus sukurtas naujas masyvas, o pradinis masyvas bus ištrintas.
- Visi masyvo elementai yra to paties tipo.
- Masyvai yra greitesni, efektyvesni ir reikalauja mažiau sintaksės nei standartinės Python sekos.
Pastaba: Įvairūs moksliniai ir matematiniai Python paketai naudoja Numpy. Jie gali priimti įvestį kaip integruotą Python seką, tačiau tikėtina, kad jie konvertuos duomenis į NumPy masyvą, kad būtų greičiau apdoroti. Tai paaiškina poreikį suprasti NumPy.
Kodėl „Numpy Array“ yra toks greitas?
Numpy masyvai dažniausiai rašomi C kalba . Rašyti C kalba, masyvai saugomi gretimose atminties vietose, todėl jas galima pasiekti ir jas lengviau valdyti. Tai reiškia, kad galite pasiekti C kodo našumo lygį lengvai rašydami Python programą.
- Vienarūšiai duomenys: Masyvai saugo to paties tipo duomenų elementus, todėl jie yra kompaktiškesni ir taupesni nei sąrašai.
- Fiksuotas duomenų tipas: Masyvai turi fiksuotą duomenų tipą, todėl sumažėja atminties sąnaudos, nes nereikia saugoti kiekvieno elemento tipo informacijos.
- Gretima atmintis: Masyvai saugo elementus gretimose atminties vietose, sumažindami suskaidymą ir užtikrindami efektyvią prieigą.

Numpy Array atminties paskirstymas
Jei jūsų sistemoje nėra įdiegta NumPy, tai galite padaryti atlikdami šiuos veiksmus. Įdiegę NumPy galite importuoti jį į savo programą taip
import numpy as np>
Pastaba: Čia np yra dažniausiai naudojamas slapyvardis NumPy.
Duomenų paskirstymas Numpy Array
NumPy duomenys atmintyje paskirstomi gretimais, laikantis gerai apibrėžto išdėstymo, kurį sudaro duomenų buferis, forma ir žingsniai. Tai būtina norint veiksmingai pasiekti duomenis, atlikti vektorizuotas operacijas ir suderinti su žemo lygio bibliotekomis, pvz., BLAS ir LAPACK .
- Duomenų buferis: NumPy duomenų buferis yra vienas plokščias atminties blokas, kuriame saugomi tikrieji masyvo elementai, neatsižvelgiant į jo matmenis. Tai įgalina efektyvias operacijas ir prieigą prie duomenų.
- Figūra: Masyvo forma yra sveikųjų skaičių eilutė, nurodanti kiekvienos ašies matmenis. Kiekvienas sveikasis skaičius atitinka masyvo dydį pagal tam tikrą matmenį, kuris apibrėžia elementų skaičių išilgai kiekvienos ašies ir yra būtinas norint teisingai indeksuoti ir pertvarkyti masyvą.
- Žingsniai: Žingsniai yra sveikųjų skaičių eilutės, kurios apibrėžia baitų, kuriuos reikia žingsniuoti kiekviename matmenyje, skaičių pereinant nuo vieno elemento prie kito. Jie nustato atstumą tarp elementų atmintyje ir matuoja, kiek baitų reikia kiekviename matmenyje perkelti iš vieno elemento į kitą.

Išvada
NumPy masyvas Python yra labai naudinga duomenų struktūra ir leidžia atlikti įvairias mokslines operacijas su duomenimis. Tai labai efektyvi atmintį naudojanti duomenų struktūra ir siūlo daugybę pranašumų prieš kitas Python sekas.
Šiame vadove mes išsamiai paaiškinome NumPy masyvus. Apžvelgėme apibrėžimą, matmenis, kodėl tai greita ir kaip duomenų paskirstymas veikia masyve. Baigę šią pamoką, įgysite išsamių žinių apie NumPy masyvą ir galėsite jį įdiegti savo Python projektuose.