Data Science

Výukový program pre Python SciPy

Výukový program pre Python SciPy
V tejto lekcii sa dozvieme, aké je použitie knižnice SciPy v Pythone a ako nám pomáha interaktívnym spôsobom pracovať s matematickými rovnicami a algoritmami. Dobrá vec na balíku SciPy Python je, že ak chceme triedy alebo zostavíme webové stránky, je SciPy plne kompatibilný so systémom ako celkom a môže poskytnúť bezproblémovú integráciu.

Ako SciPy je otvorený zdroj, má veľmi aktívnu a živú komunitu vývojárov, vďaka čomu je v sieti SciPy k dispozícii obrovské množstvo modulov pre obrovské množstvo vedeckých aplikácií a výpočtov. Niektoré zo zložitých matematických operácií, ktoré je možné vykonať pomocou SciPy, sú:

SciPy možno porovnávať s väčšinou príkazových a štandardných knižníc, ako je knižnica GSL pre C ++ a Matlab. Pretože je SciPy postavený na vrchole balíka NumPy, je možné tieto dva balíčky tiež úplne integrovať. Ak si myslíte, že je potrebné vykonať matematickú operáciu, nezabudnite skontrolovať knižnicu SciPy predtým, ako tento modul implementujete sami, pretože vo väčšine prípadov má SciPy všetky operácie už pre vás implementované.

Nainštalujte si knižnicu SciPy

Pred prechodom na skutočné príklady a koncepty si nainštalujme knižnicu SciPy. Existujú dva spôsoby inštalácie tohto balíka. Prvý zahŕňa použitie správcu balíkov Python, pip:

pip nainštalovať scipy

Druhý spôsob sa týka Anacondy, balíček môžeme nainštalovať ako:

conda install -c anaconda scipy

Po nainštalovaní knižnice ju môžeme importovať ako:

import scipy

Nakoniec, keďže budeme používať aj NumPy (Odporúča sa, aby sme pre všetky operácie NumPy používali NumPy priamo namiesto prechádzania balíkom SciPy):

importovať numpy

Je možné, že v niektorých prípadoch radi nakreslíme aj naše výsledky, pre ktoré použijeme knižnicu Matplotlib. Vykonajte nasledujúci import pre túto knižnicu:

import matplotlib

Pre všetky príklady v tejto lekcii budem používať manažéra Anacondy. Rovnaké spustím aj notebook Jupyter:

Teraz, keď sme pripravení spolu so všetkými príkazmi na import napísať nejaký kód, začnime sa ponoriť do balíka SciPy s niekoľkými praktickými príkladmi.

Práca s polynomiálnymi rovnicami

Začneme pohľadom na jednoduché polynomické rovnice. Existujú dva spôsoby, ako môžeme integrovať polynomické funkcie do nášho programu. Môžeme využiť poly1d trieda, ktorá využíva koeficienty alebo korene polynómu na inicializáciu polynómu. Pozrime sa na príklad:

z numpy import poly1d
first_polynomial = poly1d ([3, 4, 7])
print (first_polynomial)

Keď spustíme tento príklad, uvidíme nasledujúci výstup:

Je zrejmé, že polynomické znázornenie rovnice je vytlačené ako výstup, takže výsledok je ľahko pochopiteľný. Aj na tomto polynóme môžeme vykonávať rôzne operácie, napríklad kvadratovať ho, nájsť jeho deriváciu alebo ho dokonca vyriešiť pre hodnotu x. Skúsme to všetko urobiť v nasledujúcom príklade:

print ("Polynomický štvorec: \ n")
print (first_polynomial * first_polynomial)
print ("Derivát polynómu: \ n")
print (first_polynomial.deriv ())
print ("Riešenie polynómu: \ n")
print (first_polynomial (3))

Keď spustíme tento príklad, uvidíme nasledujúci výstup:

Len keď som si myslel, že to je všetko, čo môžeme urobiť so SciPy, spomenul som si, že môžeme integrovať aj polynóm. Uveďme posledný príklad s Polynomials:

print ("Integrácia polynómu: \ n")
print (first_polynomial.integ (1))

Celé číslo, ktoré minieme, hovorí balíku, koľkokrát má polynom integrovať:

Môžeme jednoducho odovzdať ďalšie celé číslo, ktoré balíku povie, koľkokrát má integrovať tento polynóm.

Riešenie lineárnych rovníc

Je dokonca možné vyriešiť lineárne rovnice pomocou SciPy a nájsť ich korene, ak existujú. Na riešenie lineárnych rovníc predstavujeme množinu rovníc ako polia NumPy a ich riešenie ako samostatné polia NumPy. Poďme si to predstaviť na príklade, kde robíme to isté a využívame to linalg balíček na nájdenie koreňov rovníc, tu sú rovnice, ktoré budeme riešiť:

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

Vyriešime vyššie uvedené rovnice:

zo scipy import linalg
rovnica = np.pole ([[1, 5], [3, 7]])
riešenie = np.pole ([[6], [9]])
korene = linalg.vyriešiť (rovnica, riešenie)
print ("Nájdené korene:")
tlač (korene)
print ("\ n Produkt s bodkami by mal byť nulový, ak sú riešenia správne:")
tlač (rovnica.bodka (korene) - riešenie)

Keď spustíme vyššie uvedený program, uvidíme, že rovnica bodového súčinu dáva nulový výsledok, čo znamená, že korene, ktoré program našiel, boli správne:

Fourierove transformácie so SciPy

Fourierove transformácie nám pomáhajú vyjadriť funkciu ako samostatné komponenty, ktoré túto funkciu tvoria, a vedie nás po ceste, cez ktorú môžeme tieto komponenty znovu skombinovať a získať tak pôvodnú funkciu späť.

Pozrime sa na jednoduchý príklad Fourierových transformácií, kde pomocou knižnice Matplotlib vykresľujeme súčet dvoch kosínusov:

zo scipy.importovať fftpack
# Počet vzorkových bodov
N = 500
# medzery medzi vzorkami
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 na účely vykreslenia
import matplotlib.pyplot ako plt
plt.pozemok (xf, 2.0 / N * np.abs (yf [0: N // 2]))
plt.názov („Informácie“)
plt.ylabel („os Y“)
plt.štítok xla („os X“)
plt.mriežka ()
plt.šou()

Tu sme začali konštrukciou vzorového priestoru a kosínovej rovnice, ktoré sme potom transformovali a vykreslili. Tu je výstup vyššie uvedeného programu:

Toto je jeden z dobrých príkladov, keď vidíme, že SciPy sa používa v zložitej matematickej rovnici na ľahkú vizualizáciu vecí.

Vektory a matice so SciPy

Teraz, keď vieme veľa vecí, ktorých je SciPy schopný, môžeme si byť istí, že SciPy dokáže pracovať aj s vektormi a maticami. Matice sú dôležitou súčasťou lineárnej algebry, pretože matice tiež reprezentujeme vektorové mapovanie.

Rovnako ako sme sa pozreli na riešenie lineárnych rovníc pomocou SciPy, môžeme reprezentovať vektory pomocou np.pole () funkcie. Začnime konštrukciou matice:

my_matrix = np.matica (np.náhodný.náhodne ((3, 3)))
print (my_matrix)

Tu je výstup z vyššie uvedeného úryvku:

Kedykoľvek hovoríme o maticiach, vždy hovoríme o vlastných hodnotách a vlastných vektoroch. Jednoduchými slovami, vlastné vektory sú vektory, ktoré po vynásobení maticou nezmenia svoj smer, na rozdiel od väčšiny vektorov. To znamená, že aj keď násobíte vlastné vektory maticou, existuje hodnota (alebo vlastná hodnota), ktorá je jedným z faktorov násobenia. To znamená:

Sekera = λx.

Vo vyššie uvedenej rovnici je A matica, λ je vlastné číslo a x je Vektor. Poďme napísať jednoduchý útržok kódu, aby sme našli vlastné čísla pre daný vektor:

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

Keď spustíme tento príklad, uvidíme nasledujúci výstup:

Výpočet determinantu matice

Ďalšou operáciou, ktorú vykonáme so SciPy, je výpočet determinantu 2-dimenzionálnej matice. Maticu, ktorú sme použili v poslednom fragmente kódu, znova použijeme tu:

linalg.det (my_matrix)

Keď spustíme tento príklad, uvidíme nasledujúci výstup:

Záver

V tejto lekcii sme sa pozreli na veľa dobrých príkladov, keď nám SciPy môže pomôcť vykonaním zložitých matematických výpočtov pomocou ľahko použiteľného API a balíkov pre nás.

Hry SuperTuxKart pre Linux
SuperTuxKart pre Linux
SuperTuxKart je vynikajúci titul navrhnutý tak, aby vám priniesol zážitok z hry Mario Kart zadarmo na vašom systéme Linux. Je to dosť náročné a zábavn...
Hry Výukový program Battle for Wesnoth
Výukový program Battle for Wesnoth
Battle for Wesnoth je jednou z najpopulárnejších open source strategických hier, ktoré si v súčasnosti môžete zahrať. Táto hra bola nielen vyvinutá ve...
Hry 0 A.D. Výukový program
0 A.D. Výukový program
Z mnohých strategických hier je tu 0 A.D. dokáže vyniknúť ako komplexný titul a veľmi hlboká, taktická hra napriek tomu, že je otvoreným zdrojom. Vývo...