Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

2. diel - NumPy - Dátové typy

V predchádzajúcej lekcii, NumPy - Predstavenie knižnice , sme sa dozvedeli základné informácie o knižnici NumPy. Naučili sme sa, ako knižnicu pridať do svojho Python prostredia a nainštalovali si Jupyter Notebook.

V tomto tutoriále knižnice NumPy v Pythone sa najskôr pozrieme na to, aké nové dátové typy knižnica do Pythona prináša. Ďalej si vysvetlíme, na čo sa nám budú hodiť a ako ich používať.

Natívne dátové typy v Pythone

Ešte než sa pustíme do dátových typov v NumPy, pripomeňme si stručne, aké dátové typy má Python defaultne. V skratke je ich týchto päť:

  1. string - reťazec znakov
  2. integer - celé číslo
  3. float - číslo s desatinou čiarkou
  4. complex - komplexné číslo
  5. bool - logická hodnota
Ako zistiť typ údajov premennej?

V Pythone je zabudovaná funkcia type(). Tá nám môže pomôcť získať prehľad o tom, s akým typom premennej práve pracujeme:

Vo výstupe konzoly dostaneme:

Pokiaľ chceme vypísať v prostredí Jupyter Notebooku iba jednu premennú, nemusíme písať do funkcie print(). Stačí ju len voľne nechať na konci bloku kódu. Túto techniku ale nie je možné použiť pri programovaní v iných IDE, v konzole ani pri skriptovaní!

Dátové typy v NumPy

Napokon sa dostávame k dátovým typom z knižnice NumPy. Knižnica používa vlastné dátové typy založené na programovacom jazyku C. Vďaka tomu sú operácie NumPy rýchlejšie ako je v Pythone bežné.

Pozor, teraz neriešime objekty typu NumPy array, ale to, čo do nich budeme vkladať.

Pre vytváranie premenných daných typov v ukážkach nižšie musíme mať importované numpy pod aliasom np:

Skratka np sa pre NumPy používa v praxi bežne. Pokojne by sme ale mohli as np vynechať av ukážkach kódu používať slovo numpy. Funguje to rovnako.

Opäť si najskôr urobíme prehľad dátových typov, tentoraz aj so skratkami, pod ktorými NumPy dané typy používa:

  • U - unicode string (reťazec unicode znakov),
  • i - integer (celé číslo),
  • u - unsigned integer (nezáporné celé číslo),
  • f - float (číslo s desatinnou čiarkou),
  • c - complex (komplexné číslo),
  • b - boolean (logická premenná),
  • M - datetime (dátum a čas).
Nejedná sa o celý zoznam, ale o výber tých, s ktorými sa najčastejšie stretneme. NumPy používa tieto znaky, aby sme mohli ľahko zistiť, o aký typ ide a zároveň aby sa typy neplietli s bežnými natívnymi typmi Pythonu.

Celý zoznam vrátane konštrukcií sa nie je potrebné učiť naspamäť! Ide skôr o orientáciu. A pri inicializácii polí sa vytvorí ten správny typ automaticky ;-)

Jednotlivé dátové typy NumPy

Poďme sa pozrieť na jednotlivé dátové typy konkrétne.

U - unicode string (reťazec unicode znakov)

Tento dátový typ je ekvivalentný typu string v Pythone.

Vytvoríme ho takto:

Rovnako ako string v Pythone, aj typ U má najrôznejšie metódy, ktoré sa naň dajú použiť. Veľkú časť z nich je možné nájsť v module np.char.

i - integer (celé číslo)

Typ i je ekvivalentný typu integer v Pythone. V určitých prípadoch sa nám bude hodiť, že ho možno definovať aj ako int32, int64 a dokonca môžeme použiť aj ľubovoľnú ďalšiu mocninu dvojky od 8 do 256. Štandardne sa používa int32, ale pre veľmi veľké čísla je potrebné použiť jeho násobnú verziu. Potom síce v pamäti počítača zaberie miesto 32 bitov rovno 64 (respektíve 128, či 256), ale niekedy nie je zvyšok.

Na vytvorenie premennej tohto typu použijeme nasledujúci kód:

Pokiaľ chceme, aby sa počet bitov zvolil automaticky, napíšeme namiesto počtu bitov podčiarknutie (_):

u - unsigned integer (nezáporné celé číslo)

Tento typ využijeme skôr v zriedkavých prípadoch. Oproti typu integer totiž unsigned integer neumožňuje ísť pod nulu. Využijeme ho napríklad pokiaľ optimalizujeme množstvo využitej pamäte počas behu programu a pritom pracujeme s veľmi vysokými nezápornými číslami.

Rovnako ako integer, aj typ u je možné použiť vo variante s väčším rozsahom bitov. Pokiaľ použijeme konštruktor bez čísla, počet bitov sa zvolí automaticky. Oproti konštruktoru typu integer (viď predchádzajúca sekcia) sa ale nepíše podtržítko za názvom:

f - float (číslo s desatinnou čiarkou)

Typ f je ekvivalent dátového typu float v Pythone. Opäť je možné zvoliť počet bitov pri vytváraní premennej. Alebo použiť konštruktor s podčiarkovníkom, ako v prípade typu i.

Pri type float sa v praxi často stáva, že nám záleží na čo najdlhšej časti za desatinou čiarkou bez zaokrúhlenia. Preto sa pre "dvojnásobný float" (teda vlastne float32) zaviedol typ double. Aj takto je možné float v NumPy inicializovať:

c - complex (komplexné číslo)

Komplexné čísla sa vytvoria jednoducho z komplexných čísel, ako ich poznáme v Pythone:

b - boolean (logická premenná)

Podobne ako predchádzajúce typy, aj boolean sa vytvára a funguje podobne, ako ho bežne poznáme v Pythone:

Podčiarknutie za kľúčovým slovom bool nie je pri tomto type povinné. Zápisy np.bool_(True) a np.bool(True) sú tak ekvivalentné. Väčšina programátorov však volí skrátenú variantu np.bool(True), pretože je kratšia a čitateľnejšia.

M - datetime (dátum a čas)

Na uloženie času do premennej slúži typ datetime. Spôsob vytvorenia tejto premennej je opäť jednoduchý. Čas sa zadáva vo formáte RRRR-MM-DDTHH:MM:SS, kde RRRR je rok, MM je mesiac a DD je deň. Znak T sa napíše jednoducho ako rozdelenie dátumu a času. HH je hodina, druhé MM je minúta a SS sú sekundy. Do sekúnd je možné dať za desatinnú čiarku aj presnejšie vyjadrenie. Navyše nám typ dovoľuje napísať len dátum alebo čas, ak chceme. Tiež môžeme neuviesť napr. sekundy. Poďme si ukázať niekoľko príkladov:

Ako zistiť typ obsiahnutý v NumPy objekte

Na záver si poďme ešte ukázať, ako zistíme konkrétny typ pri NumPy objektoch. Slúži na to atribút dtype a je to veľmi jednoduché. Princíp funguje aj pre NumPy poľa.

Ukážme si príklady pre jednotlivé typy premenných:

Vo výstupe uvidíme: To je k základným dátovým typom NumPy všetko.

V nasledujúcom kvíze, Kvíz - Dátové typy a polia v NumPy, si vyskúšame nadobudnuté skúsenosti z predchádzajúcich lekcií.


 

Predchádzajúci článok
NumPy - Predstavenie knižnice
Všetky články v sekcii
NumPy - Matematika v Pythone
Preskočiť článok
(neodporúčame)
Kvíz - Dátové typy a polia v NumPy
Článok pre vás napísal Miloš Halda
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje především bioinformatice a s ní souvisejícím tématům. Nevyhýbá se OOP jazykům, statistice a nástrojům pro analýzu dat.
Aktivity