Python, numpy
Python alapok
- Tömor, magas szinten absztraktált
- Interpretált
- Dinamikus, erős típusrendszer
- Többparadigmás
- Open-source
- Párhuzamosítási lehetőségek korlátozottak
- Egyes feladatokhoz lassú lehet
Python objektumok
- Memóriacímük lekérhető az
id()függvénnyel - Vannak alaptípusok, konténertípusok és felhasználó által definiált típusok, lekerhető az
type()függvénnyel.- vannak mutable és immutable típusok
Iterálható konténertípusok
- Képesek egyesével visszaadni az elemeiket
- Így lehet rajtuk iterálni, pédául
forciklussal - A gyakorlatban ez azt jelenti, hogy értelmezhető rá az
__iter__()függvény, mely egy iterátor objektumot ad vissza - A
__next__()függvénnyel érjük el a következő elemet - Iterátort össze lehet gyűjteni szekvencia típussá
StopIterationexceptiont vált ki, ha elfogynak az iterálható elemek.
Adatszerkezetek
- Lista
- Elemei lehetnek különböző típusúak
- Dinamikus memóriafoglalás
- Tömbként van implementálva
- Több elem elérése:
List[from:to:step]
- Tuple
- Set
- Minden elem egyszer szerepelhet
- Vegyes típusok is lehetnek, de csak immutable típusok
- Dict
Függvények
- Opcionális paraméterek (default értékkel)
- Lambdák
Vezérlési szerkezetek
-
Kódblokkok indentációval vannak jelölve
-
Szülő utasítás után indentált blokk kell
-
Egy blokk ugyan annyi karakterrel van indentálva
-
Indentáció lehet tab, vagy space, de keverni nem lehet
-
if-elif-else -
for, while -
list comprehension
Hasznos függvények
map()filter()zip()enumerate()min(), max()any(), all()
Hibakezelés
- Szintaxis hibák: ha az interpreter nem tudja értelmezni a kódot
- Futási idejű
exception-ök assert-ekunittestmodul:assertTrue(), assertEqual()
Numpy
- Gyors numerikus számítások
- Hatékony nyelveket írt, párhuzamosító kódot hív meg.
- Optimálish cache használat
- Sok neurális háló könyvtár épül numpy-ra
ndarray
- Homogén típusú elemeket tartalmaz, 0-tól indexelve
- Meghatározó attribútumok:
shape, dtype - Az elemek száma nem változhat, de az alakja igen
- A memóriában folytonosan, egy dimenzióban helyezkednek el az adatok
Univerzális függvények
- Elemenkénti műveleteket hajtanak végre
ndarray-eken - Egyszerű algebrai függvények
- A broadcasting megengedi, hogy a műveleteket olyan tömbökön is végrehajtjuk, amelyeknek nem egyezik meg teljesen az alakjuk
Broadcasting
- Ha két tömb dimenziójának száma nem egyezik, a kevesebb dimenzióval rendelkező tömb új első tengelyeket kap. Éppen annyit, hogy dimenzióik száma egyezzen.
- A második szabály, ha valamelyik tengely mentén az egyik tömb hossza egy, az a tömb azon a tengly mentén annyiszor ismétlődik, hogy a hossza egenlő legyen a másik tömbével.
Advanced indexing
- Advanced index esetén slice-ok helyett használhatunk bármilyen szekvenciát, ami integereket vagy logikai változókat tartalmaz
- Mindig másolatot ad vissza az egyszerű indexeléssel szemben
- Állhat advanced indexelt tömb értékadás bal oldalán, ilyenkor nem készül másolat, és az eredeti tömb íródik felül.
Hasznos függvények
- Szélsőértékek:
np.max(), np.min()np.argmax(), np.argmin()
- Aretmetikai műveletek
np.sum(), np.cumsum()np.prod(), np.cumprod()np.mean(), np.var(), np.std()
- Logikai műveletek
np.all()np.any()
ndarray.flatten()np.concatenate()np.stack()np.linspace(), np.logspace()np.unique()np.bincount()np.diff()