Data Science

Výukový program pro Python SciPy

Výukový program pro Python SciPy
V této lekci uvidíme, jaké je použití knihovny SciPy v Pythonu a jak nám pomáhá interaktivně pracovat s matematickými rovnicemi a algoritmy. Dobrá věc na balíčku SciPy Python je, že pokud chceme třídy nebo vytváříme webové stránky, je SciPy plně kompatibilní se systémem jako celkem a může poskytnout bezproblémovou integraci.

Tak jako SciPy je otevřený zdroj, má velmi aktivní a živou komunitu vývojářů, díky které je k dispozici enormní množství modulů pro obrovské množství vědeckých aplikací a výpočtů dostupných v SciPy. Některé ze složitých matematických operací, které lze provádět pomocí SciPy, jsou:

SciPy lze srovnávat s většinou příkazových a standardních knihoven, jako je knihovna GSL pro C ++ a Matlab. Jelikož je SciPy postaven na balíčku NumPy, lze tyto dva balíčky také zcela integrovat. Pokud si můžete myslet na matematickou operaci, kterou je třeba provést, ujistěte se, že jste si před implementací tohoto modulu sami zkontrolovali knihovnu SciPy, protože ve většině případů má SciPy všechny operace pro vás plně implementované.

Nainstalujte si knihovnu SciPy

Pojďme si nainstalovat knihovnu SciPy, než přejdeme ke skutečným příkladům a konceptům. Existují dva způsoby instalace tohoto balíčku. První zahrnuje použití správce balíčků Pythonu, pip:

pip install scipy

Druhý způsob se týká Anacondy, balíček můžeme nainstalovat jako:

conda install -c anaconda scipy

Jakmile je knihovna nainstalována, můžeme ji importovat jako:

importovat scipy

Nakonec, protože budeme používat také NumPy (Doporučuje se, aby pro všechny operace NumPy používali NumPy přímo místo procházení balíčkem SciPy):

importovat numpy

Je možné, že v některých případech budeme také rádi vykreslovat naše výsledky, pro které použijeme knihovnu Matplotlib. Proveďte následující import pro tuto knihovnu:

import matplotlib

U všech příkladů v této lekci budu používat správce Anaconda. Stejným způsobem spustím notebook Jupyter:

Nyní, když jsme připraveni se všemi dovozními příkazy napsat nějaký kód, pojďme se ponořit do balíčku SciPy s několika praktickými příklady.

Práce s polynomiálními rovnicemi

Začneme tím, že se podíváme na jednoduché polynomické rovnice. Existují dva způsoby, jak můžeme integrovat polynomiální funkce do našeho programu. Můžeme využít poly1d třída, která využívá koeficienty nebo kořeny polynomu pro inicializaci polynomu. Podívejme se na příklad:

z numpy import poly1d
first_polynomial = poly1d ([3, 4, 7])
tisk (první_polynomial)

Když spustíme tento příklad, uvidíme následující výstup: When we run this example, we will see the following output:

Je zřejmé, že polynomická reprezentace rovnice je vytištěna jako výstup, takže výsledek je snadno srozumitelný. Můžeme provádět různé operace i na tomto polynomu, jako je kvadratura, nalezení jeho derivace nebo dokonce řešení pro hodnotu x. Zkusme to udělat v následujícím příkladu:

print ("Polynomiální čtverec: \ n")
tisk (first_polynomial * first_polynomial)
print ("Derivace polynomu: \ n")
print (first_polynomial.deriv ())
print ("Řešení polynomu: \ n")
print (first_polynomial (3))

Když spustíme tento příklad, uvidíme následující výstup: When we run this example, we will see the following output:

Právě když jsem si myslel, že to je vše, co můžeme se SciPy dělat, vzpomněl jsem si, že můžeme integrovat také Polynomial. Pojďme spustit poslední příklad s Polynomials:

print ("Integrace polynomu: \ n")
print (first_polynomial.integ (1))

Celé číslo, které předáme, říká balíčku, kolikrát má být polynom integrován:

Můžeme jednoduše předat další celé číslo, které říká balíčku, kolikrát má tento polynom integrovat.

Řešení lineárních rovnic

Je dokonce možné vyřešit lineární rovnice pomocí SciPy a najít jejich kořeny, pokud existují. Pro řešení lineárních rovnic reprezentujeme množinu rovnic jako pole NumPy a jejich řešení jako samostatná pole NumPy. Pojďme si to představit na příkladu, kde děláme totéž a využíváme linalg balíček k nalezení kořenů rovnic, zde jsou rovnice, které budeme řešit:

1x + 5y = 6
3x + 7y = 9

Vyřešme výše uvedené rovnice:

ze scipy import linalg
rovnice = np.pole ([[1, 5], [3, 7]])
řešení = np.pole ([[6], [9]])
kořeny = linalg.řešit (rovnice, řešení)
print ("Nalezeny kořeny:")
tisk (kořeny)
print ("\ n Dot produkt by měl být nulový, pokud jsou řešení správná:")
tisk (rovnice.tečka (kořeny) - řešení)

Když spustíme výše uvedený program, uvidíme, že rovnice bodového produktu dává nulový výsledek, což znamená, že kořeny, které program našel, byly správné:

Fourierovy transformace se SciPy

Fourierovy transformace nám pomáhají vyjádřit funkci jako samostatné komponenty, které tuto funkci tvoří, a vede nás cestou, kterou můžeme tyto komponenty znovu zkombinovat a získat tak původní funkci zpět.

Podívejme se na jednoduchý příklad Fourierových transformací, kde pomocí knihovny Matplotlib vykreslíme součet dvou kosinů:

od scipy.fftpack importovat fft
# Počet vzorkovacích bodů
N = 500
# mezery mezi vzorky
T = 1.0/800.0
x = np.linspace (0.0, N * T, N)
y = np.cos (50.0 * 2.0 * np.pi * x) + 0.5 * np.cos (80.0 * 2.0 * np.pi * x)
yf = fft (y)
xf = np.linspace (0.0, 1.0 / (2.0 * T), N // 2)
# matplotlib pro účely vykreslování
import matplotlib.pyplot jako plt
plt.spiknutí (xf, 2.0 / N * np.abs (yf [0: N // 2]))
plt.název ('Info')
plt.ylabel ('Y axis')
plt.xlabel ('X axis')
plt.mřížka()
plt.ukázat()

Zde jsme začali konstrukcí vzorového prostoru a kosinové rovnice, kterou jsme pak transformovali a vykreslili. Zde je výstup výše uvedeného programu:

Toto je jeden z dobrých příkladů, kdy vidíme, že SciPy se používá ve složité matematické rovnici pro snadnou vizualizaci věcí.

Vektory a matice se SciPy

Nyní, když víme spoustu věcí, kterých je SciPy schopen, můžeme si být jisti, že SciPy může pracovat také s vektory a maticí. Matice jsou důležitou součástí lineární algebry, protože matice také používáme k reprezentaci vektorových mapování.

Stejně jako jsme se podívali na řešení lineárních rovnic pomocí SciPy, můžeme reprezentovat vektory s np.pole () funkce. Začněme konstrukcí matice:

my_matrix = np.matice (np.náhodný.náhodný ((3, 3)))
tisk (my_matrix)

Zde je výstup výše uvedeného fragmentu:

Kdykoli mluvíme o maticích, vždy mluvíme o vlastních hodnotách a vlastních vektorech. Jednoduše řečeno, vlastní vektory jsou vektory, které po vynásobení maticí nemění svůj směr, na rozdíl od většiny vektorů. To znamená, že i když vynásobíte vlastní vektory maticí, existuje hodnota (nebo vlastní hodnota), která je jedním z faktorů násobení. To znamená:

Ax = λx.

Ve výše uvedené rovnici je A matice, λ je vlastní hodnota a x je Vektor. Pojďme napsat jednoduchý fragment kódu, abychom našli vlastní čísla pro daný vektor:

la, vektor = linalg.eig (my_matrix)
tisk (vektor [:, 0])
tisk (vektor [:, 1])
tisk (linalg.eigvals (my_matrix))

Když spustíme tento příklad, uvidíme následující výstup: When we run this example, we will see the following output:

Výpočet determinantu matice

Další operací, kterou provedeme se SciPy, je výpočet determinantu 2-dimenzionální matice. Zde znovu použijeme matici, kterou jsme použili v posledním fragmentu kódu:

linalg.det (my_matrix)

Když spustíme tento příklad, uvidíme následující výstup: When we run this example, we will see the following output:

Závěr

V této lekci jsme se podívali na mnoho dobrých příkladů, kde nám SciPy může pomoci tím, že pro nás provede složité matematické výpočty pomocí snadno použitelného API a balíčků.

Hry Jak zachytit a streamovat vaši herní relaci v systému Linux
Jak zachytit a streamovat vaši herní relaci v systému Linux
V minulosti bylo hraní her považováno pouze za koníček, ale postupem času došlo v herním průmyslu k obrovskému nárůstu z hlediska technologie a počtu ...
Hry Nejlepší hry pro ruční sledování
Nejlepší hry pro ruční sledování
Oculus Quest nedávno představil skvělou myšlenku ručního sledování bez ovladačů. S neustále se zvyšujícím počtem her a aktivit, které provádějí podpor...
Hry Jak zobrazit překrytí OSD v linuxových aplikacích a hrách na celou obrazovku
Jak zobrazit překrytí OSD v linuxových aplikacích a hrách na celou obrazovku
Hraní her na celou obrazovku nebo používání aplikací v režimu celé obrazovky bez rozptýlení vás mohou odříznout od příslušných systémových informací v...