1. Jupyter notebook a základy Pythonu#
*.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ý.
Stiskněte
a.Vyberte tento nový řádek a stiskněte
m. Nyní lze do řádku místo kódu zapisovat text,Zadávání ukončíte stisknutím kombinace
Shift+Enter.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
# Cviceni 01.01
1.3. Podmínkové cykly#
1.3.1. If … else#
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
# 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)
array má první 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
# 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
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
# Cviceni 01.03
matplotlib lze nalézt na https://matplotlib.org/.