1. Jupyter notebook a základy Pythonu#

On-line interaktivní verze: Pro spuštení interaktivní verze této stránky klikněte ve vrchním menu na a zvolte Binder, ve kterém lze Jupyter notebook (JP) upravovat a následně uložit na disk.
Tip: Tento soubor je možné stáhnout kliknutím na , a to ve formě *.ipynb pro pozdější off-line editaci v prostředí Anaconda, nebo pro on-line editaci v Google Colab.

1.1. Interaktivní Jupyter notebook#

Napište print('Hello, World!') a stiskněte Shift + Enter (nebo Ctrl + Enter)

# print

Pomocí klávesy b vložíte další řádek do JP.

  • Stiskněte b.

Odstranění řádku: vyberte řádek v JP a stiskněte d + d

Klávesou a vložíte nový řádek nad právě vybraný.

  1. Stiskněte a.

  2. Vyberte tento nový řádek a stiskněte m. Nyní lze do řádku místo kódu zapisovat text,

  3. Zadávání ukončíte stisknutím kombinace Shift + Enter.

  4. Pokud chcete řádek převést na kód, stiskněte y.

Pro nápovědu stiskněte h.

1.2. Python#

Jednořádkový komentář se zadává za znak #, více řádků lze zakomentovat pomocí """ a """:

# toto je komentar

Inicializace proměnných a, b, základní aritmetické operace a výpis výsledku pomocí funkce print():

# zakladni aritmeticke operace
Cvičení 01.01: Vypočtěte objem jehlanu o stranách 3 a 4 majiícího výšku 7.
# Cviceni 01.01

1.3. Podmínkové cykly#

1.3.1. If … else#

Pozor: vnitřní části kódu je nutné odsadit, obvykle se používají čtyři mezery.

Za klíčovými slovy if a else musíme psát :.

# if, else

1.3.2. For …#

Zde využijeme funkci range(min,max,krok), která vytvoří sekvenci celých čísel od min po max (prvek max není v sekvenci obsažen) s uvedeným krokem. Výchozí hodnoty jsou min = 0 a krok = 1.

# for

1.3.3. While…#

# while

1.3.4. Break#

Pomocí příkazu break se ukončí probíhající cyklus. Pokud je cyklus vnořený, ukončí se pouze tento vnořený cyklus. V následujícím příkladu využijeme funkci len() která nám vrátí délku seznamu vytvořeného pomocí range().

# Ze seznamu cislic 0,1,2,... chci vypsat pouze prvni dve cislice. 

1.3.5. Continue#

Příkaz continue ukončí aktuální iteraci v cyklu a pokračuje další iterací.

# Ze seznamu cislic 0,1,2,... chci vypsat vsechny cislice, krome dvojky. 

1.4. Funkce#

Funkce se definuje příkazem def. Následuje jméno funkce, seznam vstupních parametrů a vše je zakončené :. Tělo funkce musí být odsazené. Funkce může vrátit hodnotu pomocí příkazu return.

# funkce
Cvičení 01.02: Napište funkci, která rozhodne, zda zadané číslo je liché, nebo sudé, a vypište výsledek.
# Cviceni 01.02

1.5. Numerická knihovna numpy#

Pro import numerické knihovny numpy použijeme příkaz:

import numpy as np

1.5.1. Maticové operace#

Pole (vektor, matice) lze vytvářet pomocí funkce array():

# vektor

# matice (pole)
Pozor: v poli arrayprvní prvek index 0!

Rozměry pole zjistíme pomocí funkce shape:

# shape

Funkce size vrátí počet prvků v poli:

# size

Matici lze transponovat funkcí transpose():

# transpose

Pro vytváření polí lze používat následující generátory:

  • Pomocí funkce arange() vytvoříme pole s prvky od 0 do 10 (poslední prvek není obsažen) a krokem 1:

# arange
  • Pomocí funkce linspace() vygenerujeme pole s prvky od 0 do 10 (včetně), přičemž počet prvků je 20:

# linspace
  • Příkazem logspace() vytvoříme pole od 0 do 10 s počtem prvků 20 v logaritmickém měřítku (\(\log_{10}\)):

# logspace
  • Pomocí funkce zeros() vytvoříme nulovou matici 2x2:

# zeros
  • Funkcí ones() vytvoříme jednotkovou matici 3x3:

# ones
  • Pomocí funkce eye() vytvoříme matici 3x3 s jedničkami na diagonále, ostatní hodnoty jsou nulové:

# eye
  • Pole náhodných čísel v rozmezí 0 az 1 se vygeneruje pomocí funkce np.random.rand():

# random

Pro přístup k prvkům pole A používáme syntaxi A[i,j], kde i je index řádku a j je index sloupce:

# pole

Pro přístup k prvkům pole používáme syntaxi [min:max:krok]. Mějme vektor \(\mathbf{v}=(0,1,2,3,4,5,6)\). Nyní z něj vyjmeme první (“0”) až šestý prvek (“5”), a to s krokem 2:

# pole - vyber

Podobně u matice \(A\) vybereme např. poslední dva prvky ve třetím sloupci.

# pole - vyber

U matice \(A\) vybereme první řádek:

# pole - vyber

U matice \(A\) vybereme první sloupec:

# pole - vyber

Násobení matic a vektorů se provádí pomocí operátoru dot:

# matice 2x3

# matice 3x2

# vysledek
Pozor: operace C*C násobí matice po prvcích (není to maticové násobení)
# maticove nasobeni

# nasobeni po prvcich

1.5.2. Funkce#

numpy obsahuje často používané funkce a konstanty (napr. sqrt(), log(), log10(), sin(), abs(), e, pi, …):

# numpy - funkce

Součet prvků v poli je dán funkcí sum():

# soucet prvku v poli

Minimální a maximální hodnotu v poli určíme funkcí min() a max():

# maximalni hodnota v poli

# minimalni hodnota v poli

Funkce average() vrací průměrnou hodnotu; std() je směrodatná odchylka a var() je rozptyl:

# prumerna hodnota

# smerodatna odchylka

# rozptyl

Index prvku v poli lze najít pomocí funkce argwhere():

# argwhere
Tip: Další příklady a návody pro práci s knihovnou numpy lze nalézt na https://numpy.org/.

1.6. Visualizace dat#

Pro kreslení grafů využijeme knihovnu matplotlib.pyplot:

import matplotlib.pyplot as plt

1.6.1. Graf jedné proměnné#

Vygenerujeme \(x\) a \(y\) hodnoty pro funkci sin():

# hodnoty x a y

Nejdříve je potřeba vytvořit obrázek pomocí fig. Vykreslení dat provedeme příkazem plot():

# vykresleni x,y

Přidáme popisky os pomocí set_xlabel(), set_ylabel() a název grafu pomocí set_title():

# popisky os, nazev grafu

Přidáme funkci cos(), nastavíme barvu (color), styl (linestyle) a šířku (linewidth) linky. Průhlednost se nastavuje parametrem alpha. Legendu zobrazíme příkazem legend():

# funkce cos()

# vykreslime funkci cos()

Na závěr obrázek uložíme příkazem savefig():

# ulozeni obrazku

1.6.2. Visualizace závislosti dvou proměnných#

Mějme funkci \(z(x,y)\), která závisí na dvou proměnných \(z(x,y)=\exp(-\sqrt{x^2+y^2})\cos(2x)\sin(2y)\), a vykreslíme její závislost v 2D grafu.

Vytvoříme mřížku \(x\times y\) pomocí funkce meshgrid():

# meshgrid

Spočítáme hodnoty funkce \(z(x,y)\):

# hodnoty z

2D graf vykreslíme pomocí funkce pcolor() s parametrem shading='auto':

# vykresleni dat

Kontury získáme použitím funkce contour():

# contour

1.6.3. 3D visualizace#

Máme stejnou funkci \(z(x,y)=\exp(-\sqrt{x^2+y^2})\cos(2x)\sin(2y)\), kterou nyní chceme vykreslit v 3D grafu. Nejdříve vytvoříme trojrozměrnou osu:

# 3D graf

Vytvoříme mřížku \(x\times y\) pomocí funkce meshgrid:

# meshgrid

Spočítáme hodnoty funkce \(z(x,y)\):

# hodnoty z

3D data vykreslíme pomocí funkce plot_surface() a přidáme popisky os:

# vykresleni dat - plot_surface
Cvičení 01.03: Vykreslete průběh funkce log(x) pro x od 0.1 do 10. Osy grafu popište, přidejte legendu a obrázek uložte ve formátu *.jpg.
# Cviceni 01.03
Tip: Další příklady a návody pro práci s knihovnou matplotlib lze nalézt na https://matplotlib.org/.