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
for
ciklussal - 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á
StopIteration
exceptiont 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
-ekunittest
modul: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()