Adattudomány

Python NumPy bemutató

Python NumPy bemutató
Ebben a leckében a Python NumPy könyvtárról megvizsgáljuk, hogy ez a könyvtár hogyan képes kezelni az N-dimenziós tömbobjektumokat kifinomult funkciókkal, hogy ezeket a tömböket kezeljük és működtessük. Hogy ez a lecke teljes legyen, a következő szakaszokat tárgyaljuk:

Mi a Python NumPy csomag?

Egyszerűen fogalmazva: a NumPy a „Numerical Python” rövidítést jelenti, és ezt kívánja teljesíteni, hogy az N dimenziós tömb objektumokon végzett komplex numerikus műveleteket nagyon egyszerűen és intuitív módon tegye lehetővé. Ez az alapkönyvtár, amelyet a tudományos számítástechnika, a lineáris algebrai műveletek és statisztikai műveletek végrehajtásához rendelkezésre álló funkciókkal.

Az egyik legalapvetőbb (és legvonzóbb) fogalom a NumPy számára az N-dimenziós tömb objektumok használata. Ezt a tömböt csak a-ként vehetjük fel sorok és oszlopok gyűjteménye, akárcsak egy MS-Excel fájl. Lehetőség van egy Python-lista konvertálására NumPy tömbre, és funkciókat működtethetünk rajta.

NumPy tömb reprezentáció

Csak egy megjegyzés a kezdés előtt használunk egy virtuális környezetet ehhez a leckéhez, amelyet a következő paranccsal készítettünk:

python -m virtualenv numpy
forrásszám / bin / aktiválás

Miután a virtuális környezet aktív, telepíthetjük a numpy könyvtárat a virtuális env-be, hogy a következő módon létrehozott példák végrehajthatók legyenek:

pip install numpy

Valami ilyesmit látunk, amikor végrehajtjuk a fenti parancsot:

Gyorsan teszteljük, hogy a NumPy csomag megfelelően lett-e telepítve a következő rövid kódrészlettel:

importálja a numpy-t np-ként
a = np.tömb ([1,2,3])
nyomtatás (a)

A fenti program futtatása után a következő kimenetet kell látnia:

Többdimenziós tömbökkel is rendelkezhetünk a NumPy-vel:

multi_dimension = np.tömb ([(1, 2, 3), (4, 5, 6)])
nyomtatás (multi_dimension)

Ez olyan kimenetet eredményez, mint:

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

Használhatja az Anaconda-t is ezeknek a példáknak a futtatásához, ami könnyebb, és ezt használtuk fent. Ha telepíteni szeretné a számítógépére, nézze meg a „Hogyan telepítsük az Anaconda Python-ot az Ubuntu 18-ra” című leckét.04 LTS ”, és ossza meg visszajelzését. Most térjünk át a különféle típusú műveletekre, amelyeket a Python NumPy tömbökkel lehet végrehajtani.

NumPy tömbök használata a Python listákon

Fontos megkérdezni, hogy amikor a Python már kifinomult adatstruktúrával rendelkezik több elem tárolására, miért van szükségünk egyáltalán a NumPy tömbökre? A NumPy tömbök a Python listákkal szemben a következő okok miatt:

Hadd bizonyítsa, hogy a NumPy tömbök kevesebb memóriát foglalnak el. Ezt meg lehet tenni egy nagyon egyszerű Python program megírásával:

importálja a numpy-t np-ként
import idő
import sys
python_list = tartomány (500)
nyomtatás (sys.getsizeof (1) * len (python_list))
numpy_arr = np.arange (500)
nyomtatás (numpy_arr.méret * numpy_arr.itemsize)

A fenti program futtatásakor a következő kimenetet kapjuk:

14000
4000

Ez azt mutatja, hogy ugyanaz a méretlista több mint 3-szor mérete az azonos méretű NumPy tömbhöz képest.

NumPy műveletek végrehajtása

Ebben a szakaszban tekintsük át gyorsan a NumPy tömbökön végrehajtható műveleteket.

Méretek keresése a tömbben

Mivel a NumPy tömb bármilyen dimenziós térben használható az adatok tárolására, egy tömb dimenzióját a következő kódrészlettel találhatjuk meg:

importálja a numpy-t np-ként
numpy_arr = np.tömb [[(1,2,3), (4,5,6)])
nyomtatás (numpy_arr.ndim)

A kimenetet „2” -nek fogjuk látni, mivel ez egy kétdimenziós tömb.

A tömbben található elemek adattípusának megkeresése

Bármely adattípus tárolására használhatjuk a NumPy tömböt. Nézzük meg most a tömbben szereplő adatok adattípusát:

egyéb_arr = np.tömb ([('félelem', 'b', 'macska')])
print (egyéb_arr.dtype)
numpy_arr = np.tömb ([(1,2,3), (4,5,6)])
nyomtatás (numpy_arr.dtype)

Különböző típusú elemeket használtunk a fenti kódrészletben. Itt van a kimenet, amelyet ez a szkript mutat:

int64

Ez akkor történik, amikor a karaktereket unicode karakterként értelmezik, a második pedig nyilvánvaló.

Átrendezze egy tömb elemeit

Ha egy NumPy tömb 2 sorból és 4 oszlopból áll, akkor úgy alakítható át, hogy 4 sort és 2 oszlopot tartalmazzon. Írjunk egy egyszerű kódrészletet ugyanarra:

eredeti = np.tömb ([('1', 'b', 'c', '4'), ('5', 'f', 'g', '8')])
nyomtatás (eredeti)
átformálva = eredeti.átformálni (4, 2)
nyomtatás (átformálva)

Miután futtattuk a fenti kódrészletet, a következő kimenetet kapjuk, mindkét képernyőt kinyomtatva:

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

Vegye figyelembe, hogy a NumPy gondoskodott az elemek áthelyezéséről és új sorokhoz való társításáról.

Matematikai műveletek egy tömb elemein

Matematikai műveletek végrehajtása egy tömb elemein nagyon egyszerű. Kezdjük egy egyszerű kódrészlet megírásával, hogy megtudjuk a tömb összes elemének maximumát, minimumát és összeadását. Itt van a kódrészlet:

numpy_arr = np.tömb ([(1, 2, 3, 4, 5)])
nyomtatás (numpy_arr.max ())
nyomtatás (numpy_arr.perc ()
nyomtatás (numpy_arr.összeg())
nyomtatás (numpy_arr.átlagos())
nyomtatás (np.sqrt (numpy_arr))
nyomtatás (np.std (numpy_arr))

A fenti utolsó 2 műveletben kiszámítottuk az egyes tömbök négyzetgyökét és szórását is. A fenti részlet a következő kimenetet adja:

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

A Python-listák konvertálása NumPy-tömbökké

Még akkor is, ha a meglévő programjaiban használta a Python listákat, és nem akarja megváltoztatni az összes kódot, de továbbra is használni szeretné a NumPy tömböket az új kódban, jó tudni, hogy könnyen átalakíthatunk egy Pythont listát egy NumPy tömbhöz. Íme egy példa:

# Hozzon létre 2 új listát magasság és súly
magasság = [2.37, 2.87, 1.52, 1.51, 1.70, 2.05]
tömeg = [91.65, 97.52, 68.25, 88.98, 86.18, 88.45]
# Hozzon létre 2 tömb tömböt magasságból és súlyból
np_height = np.tömb (magasság)
np_súly = np.tömb (súly)

Csak az ellenőrzés érdekében kinyomtathatjuk az egyik változó típusát:

nyomtatás (típus (np_height))

És ez megmutatja:

Most matematikai műveleteket hajthatunk végre az összes elem felett egyszerre. Lássuk, hogyan számíthatjuk ki az emberek BMI-jét:

# Számolja ki a bmi-t
bmi = np_weight / np_height ** 2
# Nyomtassa ki az eredményt
nyomtatás (bmi)

Ez megmutatja az emberek BMI-jét elemenként kiszámítva:

[16.31682957 11.8394056 29.54033934 39.02460418 29.8200692 21.04699584]

Nem olyan könnyű és praktikus? Még az adatokat is könnyedén szűrhetjük, a szögletes zárójelben lévő index helyett egy feltétellel:

bmi [bmi> 25]

Ez:

tömb ([29.54033934, 39.02460418, 29.8200692])

Hozzon létre véletlenszerű szekvenciákat és ismétléseket a NumPy segítségével

Mivel a NumPy számos funkcióval rendelkezik véletlenszerű adatok létrehozásához és a kívánt formában történő elrendezéséhez, a NumPy tömböket sokszor használják tesztadatkészlet sok helyen történő létrehozásához, beleértve a hibakeresést és a tesztelési célokat is. Például, ha 0 és n közötti tömböt szeretne létrehozni, használhatjuk az arange-ot (vegye figyelembe az „r” -et), mint a megadott részlet:

nyomtatás (np.arange (5))

Ez a kimenetet a következőképpen adja vissza:

[0 1 2 3 4]

Ugyanez a függvény használható alacsonyabb érték biztosítására, így a tömb 0-tól eltérő számoktól indul:

nyomtatás (np.narancs (4, 12))

Ez a kimenetet a következőképpen adja vissza:

[4 5 6 7 8 9 10 11]

A számoknak nem kell folyamatosnak lenniük, kihagyhatnak egy javítási lépést, például:

nyomtatás (np.narancs (4, 14, 2)

Ez a kimenetet a következőképpen adja vissza:

[4 6 8 10 12]

Negatív kihagyási értékkel csökkenő sorrendben is megkaphatjuk a számokat:

nyomtatás (np.narancs (14, 4, -1))

Ez a kimenetet a következőképpen adja vissza:

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

Lehetséges, hogy n és x közötti számot finanszírozhatunk egyenlő térközzel a linspace módszerrel, itt található a kódrészlet:

np.linspace (start = 10, stop = 70, num = 10, dtype = int)

Ez a kimenetet a következőképpen adja vissza:

tömb ([10, 16, 23, 30, 36, 43, 50, 56, 63, 70])

Felhívjuk figyelmét, hogy a kimeneti elemek nincsenek egyformán elosztva. A NumPy mindent megtesz ennek érdekében, de nem kell rá támaszkodnia, mint a kerekítés során.

Végül nézzük meg, hogyan állíthatunk elő véletlenszerű sorozatokat a NumPy segítségével, amely az egyik leggyakrabban használt funkció tesztelési célokra. Számos tartományt adunk át a NumPy-nek, amelyet a véletlenszámok kezdő és utolsó pontjaként használunk:

nyomtatás (np.véletlen.randint (0, 10, méret = [2,2]))

A fenti kódrészlet létrehoz egy 2 x 2 dimenziós NumPy tömböt, amely véletlenszerű számokat tartalmaz 0 és 10 között. Itt van a minta kimenete:

[[0 4]
[8 3]]

Felhívjuk figyelmét, hogy mivel a számok véletlenszerűek, a kimenet eltérhet ugyanazon a gépen futó két menet között is.

Következtetés

Ebben a leckében megvizsgáltuk ennek a számítástechnikai könyvtárnak a különböző aspektusait, amelyeket a Python segítségével egyszerű és összetett matematikai problémák kiszámításához használhatunk, amelyek felmerülhetnek a különböző használati esetekben. A NumPy az egyik legfontosabb számítási könyvtár, amikor adatfeldolgozás és számszerű dat kiszámítása, mindenképpen olyan képesség, amellyel rendelkeznünk kell az öv alatt.

Kérjük, ossza meg visszajelzését a leckéről a Twitteren a @sbmaggarwal és a @LinuxHint oldalakon.

OpenTTD vs Simutrans
Saját közlekedési szimuláció létrehozása szórakoztató, pihentető és rendkívül csábító lehet. Ezért meg kell győződnie arról, hogy a lehető legtöbb ját...
OpenTTD bemutató
Az OpenTTD az egyik legnépszerűbb üzleti szimulációs játék. Ebben a játékban létre kell hoznia egy csodálatos szállítási vállalkozást. Azonban kezdete...
SuperTuxKart Linuxhoz
A SuperTuxKart egy nagyszerű cím, amelynek célja, hogy ingyenesen hozza el a Mario Kart élményét Linux rendszerén. Elég kihívást jelentő és szórakozta...