- Mi a Python NumPy csomag?
- NumPy tömbök
- Különböző műveletek, amelyek elvégezhetők a NumPy tömbökön keresztül
- Néhány további speciális funkció
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 numpyforrá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 numpyValami 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énta = 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:
- Kényelmesen használható matematikai és számítási intenzív műveletekhez a kompatibilis NumPy függvények miatt
- Sokkal gyorsabbak az adatok belső tárolásának köszönhetően
- Kevesebb memória
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éntimport 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:
140004000
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éntnumpy_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:
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:
51
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úlymagassá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-tbmi = 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.