S_1124_Flexcam Advertisement S_1124_Flexcam S_1124_Flexcam Advertisement

Python: Knižnice Pythonu / 33

Predplatné
0

Pamätám sa, ako som pred viac ako 20 rokmi začínal s programovaním a mojou absolútnou túžbou bolo zobraziť pomocou Assemblera obyčajnú čiaru a neskôr rasterizovať trojuholník. V Pascale som sa snažil dopočítať k perspektívnemu 3D zobrazeniu niekoľkých čiar a neskôr v jazyku C riešil maticovú algebru. Moje strasti s ručným programovaním elementárnych prvkov vyriešila grafická knižnica OpenGL. Zistil som, že drvivá väčšina kódu, ktorý som sa snažil tak krvopotne vymyslieť, bola implementovaná v rámci uvedenej knižnice. Za tých 20 rokov sa svet programovania obrátil naruby a dovolím si konštatovať, že v dnešnej dobe neexistuje žiadny triviálny kód, ktorý by nebol implementovaný v rámci nejakej knižnice. Takisto si dovolím tvrdiť, že dnešný spôsob programovania je až neuveriteľne vzdialený od toho spred 20 rokov. Programátori už nevkladajú do kódu inštrukciu za inštrukciou, ale spájajú vopred pripravené bloky inštrukcií, často s cieľom tzv. rýchleho vývoja aplikácií (Rapid Application Development).

Knižnice Pythonu

Implementácii základných algoritmických konštrukcií v rámci knižníc sa nevyhol ani jazyk Python. Momentálne existuje viac ako 130 000 knižníc, pomocou ktorých možno v Pythone nie programovať, ale skladať programový kód. Knižnica, nástroj, prípadne balíček alebo aj modul či množina modulov je kolekcia tried, metód, vnorených knižníc, resp. submodulov a premenných, ktoré možno použiť na prípravu kódu bez toho, aby sme museli naprogramovať všetky jeho elementárne časti. Knižnice obsahujú deklarácie a definície funkcionalít, pričom často hovoríme o tzv. opätovne použiteľných (Re-Usable) funkciách, resp. funkcionalite. Princíp je úplne rovnaký, ako keď v rámci nášho kódu raz zadefinujeme obsah funkcie a neskôr túto funkciu niekoľkokrát voláme.

Pre Python bolo za 30 rokov jeho existencie naprogramovaných nesmierne množstvo knižníc, ktoré umožňujú programátorom zamerať sa na ciele, a nie na to, ako sa k stanoveným cieľom dostať. Je nemožné opísať všetky knižnice v jedinom článku, dokonca sa nedajú ani len vymenovať. Preto nám pomôže internet, kde možno nájsť viacero zoznamov tzv. najpopulárnejších knižníc, medzi ktoré patria napr. BeutifullSoup (Data Science / HTML / XLM), Bokeh (Data Visualization), Eli5 (ML – Machine Learning), Keras (NN – Neural Networks), LightGBM (Gradient Boosting Machine / ML), Matplotlib (Data Visualization), Pillow (Image Manipulation), PyGame (Game Development), PyTorch (Deep Learning), Requests (HTTP Requests), Scrapy (Web Scraping), Theano (ML Mathematics), Tkinter (GUI Development) a mnoho ďalších. Niektoré knižnice sú voľne dostupné, za iné treba platiť. Pri výbere príslušnej knižnice je dôležitá jej kompatibilita s cieľovou verziou Pythonu a takisto s ostatnými knižnicami. Kontraproduktívna je existencia knižníc s podobnou funkcionalitou. Konečné rozhodnutie, ktorú knižnicu použiť a ktorú nie, často nemožno nájsť v dokumentácii ani na internete, ale je to na preferenciách programátorov. My v krátkosti predstavíme tie knižnice, s ktorými sa s veľkou pravdepodobnosťou stretneme, rovnako ako sme sa s nimi stretli v rámci nášho seriálu a našich vzorových aplikácií.

NumPy – Scientific / Numerical Computing (numpy.org)

Multiplatformová open source knižnica NumPy je určená na vykonávanie najrôznejších matematických výpočtov s n-rozmernými typmi údajov (najmä s vektormi, poliami, maticami), na vykonávanie rôznych analýz a navyše ako základ pre ostatné knižnice podobného typu. Knižnica obsahuje množstvo optimalizovaných matematických, geometrických, štatistických a simulačných funkcií, použiteľných okrem iného aj v rámci aplikácií AI (Artificial Intelligence) a ML.

pandas – Data Science (pandas.pydata.org)

Open source knižnica pandas je určená na vysokovýkonnú manipuláciu (spájanie, rozdeľovanie, indexovanie, selekciu, výber, usporadúvanie, opisovanie, konverziu...) a analýzu rôznych typov údajov. Je založená na knižnici NumPy, pričom pomocou svojich flexibilných vysokoúrovňových dátových štruktúr umožňuje vykonávať množstvo štatistických a vedeckých výpočtov. Poskytuje veľa výhod pri spracúvaní údajov uložených v tabuľkách, maticiach, resp. iných štatistických dátových štruktúrach.

SciPy – Data Manipulation / Visualization (scipy.org)

SciPy je open source knižnica založená takisto na knižnici NumPy. Je použiteľná na vykonávanie najrôznejších vysokovýkonných vedeckých výpočtov, výpočtov lineárnej algebry, ďalej na štatistické výpočty, vykonávanie transformácií, interpolácií, spracovávanie signálov, optimalizované spracúvanie údajov a viacrozmerných obrazov.

scikit-learn – ML (scikit-learn.org)

Ide o ďalšiu open source knižnicu, ktorá je založená na knižniciach NumPy a SciPy. Prioritne je určená na analýzu, klasifikáciu, predikciu, zoskupovanie, spracovávanie a modelovanie údajov. Jej výstupy sú priamo použiteľné pri riešení rôznych úloh v rámci ML. Považuje sa za jednu z najkvalitnejšie napísaných knižníc, a to pre jej jednoduchosť, konzistenciu a intuitívnosť jej API.

TensorFlow – ML / Large Numerical Computations (tensorflow.org)

Posledná open source knižnica, ktorú predstavíme, je TensorFlow. Ide o vysokovýkonnú matematicko-fyzikálnu „vedeckú kalkulačku“, ktorá je flexibilne použiteľná na riešenie rôznych ML/NN úloh – od vytvorenia modelov cez ich tréning až po poskytovanie a analýzu ich výstupov. Ďalej na vykonávanie rôznych štatistických, resp. dátových analýz. Knižnicu možno s výhodou použiť napr. na analýzu multimediálnych, resp. streamovaných údajov a prácu s neurónovými sieťami.

Kód väčšiny knižníc Pythonu bol napísaný v jazyku C/C++, v čom tkvie ich efektivita a výkonnosť. Naprogramovať vlastnú knižnicu, či už v jazyku Python, v jazyku C, alebo v inom programovacom jazyku, nie je žiadny problém. Vráťme sa však k úvodu tohto článku a zopakujme, že extrémne množstvo základnej funkcionality je už zahrnuté do súčasných knižníc Pythonu. Táto funkcionalita je optimalizovaná a rokmi otestovaná, preto nemrhajme čas „vymýšľaním kolesa“.

Zobrazit Galériu

Marek Sopko

Všetky autorove články

Pridať komentár