Výukový program pro SciPy: Co je Python SciPy a jak jej používat?



SciPy je knihovna v Pythonu používaná k řešení vědeckých a matematických problémů. NumPy vs SciPy. Základní, speciální, integrace, optimalizace atd. S příklady.

Matematika se zabývá velkým množstvím konceptů, které jsou velmi důležité, ale zároveň složité a časově náročné. Nicméně, poskytuje pro nás plnohodnotnou knihovnu SciPy, která tento problém řeší. V tomto výukovém programu SciPy se naučíte využívat tuto knihovnu spolu s několika funkcemi a jejich příklady.

Než budete pokračovat, podívejte se na všechna témata popsaná v tomto článku:





Pojďme tedy začít. :)

Co je SciPy?

SciPy je open-source knihovna v Pythonu, která se používá k řešení vědeckých a matematických problémů. Je postaven na rozšíření a umožňuje uživateli manipulovat a vizualizovat data pomocí široké škály příkazů na vysoké úrovni. Jak již bylo zmíněno dříve, SciPy staví na NumPy, a proto pokud importujete SciPy, není třeba NumPy importovat.



NumPy vs SciPy

NumPy i SciPy jsou používá se pro použitou matematickou a numerickou analýzu. NumPy obsahuje data pole a základní operace, jako je třídění, indexování atd., Zatímco SciPy se skládá ze všech číselných kódů. Ačkoli NumPy poskytuje řadu který může pomoci vyřešit lineární algebru, Fourierovy transformace atd., SciPy je knihovna, která ve skutečnosti obsahuje plně vybavené verze těchto funkcí spolu s mnoha dalšími. Pokud však provádíte vědecké analýzy pomocí Pythonu, budete muset nainstalovat NumPy i SciPy, protože SciPy staví na NumPy.

Podbalení v SciPy:

SciPy má řadu dílčích balíčků pro různé vědecké výpočty, které jsou uvedeny v následující tabulce:

názevPopis
shlukShlukovací algoritmy
konstantyFyzikální a matematické konstanty
fftpackRutiny Fourierovy transformace
integrovatIntegrace a řešení obyčejných diferenciálních rovnic
interpolovatInterpolace a vyhlazení splajnů
Vstup a výstup
linalgLineární algebra
já létámN-rozměrné zpracování obrazu
odrOrtogonální regrese vzdálenosti
optimalizovatRutiny optimalizace a hledání kořenů
signálZpracování signálu
řídkýŘídké matice a související rutiny
prostorovýStruktury a algoritmy prostorových dat
speciálníSpeciální funkce
statistikyStatistické rozdělení a funkce

Pro podrobný popis však můžete postupovat podle oficiální dokumentace .



Tyto balíčky je třeba importovat výhradně před jejich použitím. Například:

ze scipy importního klastru

Než se podrobně podíváme na každou z těchto funkcí, nejprve se podívejme na funkce, které jsou běžné jak v NumPy, tak v SciPy.

Základní funkce:

Interakce s NumPy:

SciPy staví na NumPy, a proto můžete pro zpracování polí využít samotné funkce NumPy. Chcete-li se dozvědět podrobnější informace o těchto funkcích, můžete jednoduše použít funkce help (), info () nebo source ().

Pomoc():

Chcete-li získat informace o jakékoli funkci, můžete využít Pomoc() funkce. Tuto funkci lze použít dvěma způsoby:

  • bez jakýchkoli parametrů
  • pomocí parametrů

Zde je příklad, který ukazuje obě výše uvedené metody:

z scipy import clusteru help (cluster) # s parametrem help () # bez parametru

Když provedete výše uvedený kód, vrátí první help () informace o shluk submodul. Druhá nápověda () požádá uživatele o zadání názvu libovolného modulu, klíčového slova atd., Pro které si uživatel přeje vyhledat informace. Chcete-li zastavit provádění této funkce, jednoduše zadejte „quit“ a stiskněte klávesu Enter.

informace ():

Tato funkce vrací informace o požadovaném , moduly atd.

scipy.info (cluster)

zdroj():

Zdrojový kód se vrací pouze pro objekty zapsané v . Tato funkce nevrací užitečné informace v případě, že jsou metody nebo objekty psány v jiném jazyce, například C. Pokud však chcete tuto funkci využít, můžete to provést následovně:

scipy.source (cluster)

Speciální funkce:

SciPy poskytuje řadu speciálních funkcí, které se používají v matematické fyzice, jako je eliptika, komfortní funkce, gama, beta atd.Chcete-li hledat všechny funkce, můžete využít funkci help (), jak je popsáno výše.

Exponenciální a trigonometrické funkce:

Balíček speciálních funkcí SciPy poskytuje řadu funkcí, pomocí kterých můžete najít exponenty a řešit trigonometrické problémy.

Zvažte následující příklad:

PŘÍKLAD:

ze scipy import special a = special.exp10 (3) print (a) b = special.exp2 (3) print (b) c = special.sindg (90) print (c) d = special.cosdg (45) print ( d)

VÝSTUP:

1000,0
8.0
1.0
0,7071067811865475

V balíčku speciálních funkcí SciPy je mnoho dalších funkcí, které si můžete sami vyzkoušet.

Funkce integrace:

SciPy poskytuje řadu funkcí pro řešení integrálů. Od běžného diferenciálního integrátora až po použití lichoběžníkových pravidel k výpočtu integrálů je SciPy zásobárnou funkcí pro řešení všech typů integrálních problémů.

rozdíl mezi kuchařem a loutkou

Obecná integrace:

SiPy poskytuje funkci s názvem čtyřkolka vypočítat integrál funkce, která má jednu proměnnou. Limity mohou být ± a infin(± inf) k označení nekonečných limitů. Syntaxe funkce quad () je následující:

SYNTAX:

quad (func, a, b, args = (), full_output = 0, epsabs = 1,49e-08, epsrel = 1,49e-08, limit = 50, body = žádný, váha = žádný, wvar = žádný, wopts = žádný , maxp1 = 50, limlst = 50)

Zde bude funkce integrována mezi limity a a b (může být také nekonečná).

PŘÍKLAD:

ze scipy import speciální ze scipy import integrovat a = lambda x: special.exp10 (x) b = scipy.integrate.quad (a, 0, 1) print (b)

Ve výše uvedeném příkladu je funkce ‚a 'vyhodnocena mezi limity 0, 1. Když je tento kód spuštěn, uvidíte následující výstup.

VÝSTUP:

(3.9086503371292665, 4.3394735994897923e-14)

Dvojitá integrální funkce:

SciPy poskytuje dblquad které lze použít k výpočtu dvojitých integrálů. Dvojitý integrál, jak mnozí z nás vědí, se skládá ze dvou skutečných proměnných. Funkce dblquad () vezme funkci, která má být integrována jako její parametr, spolu s dalšími 4 proměnnými, které definují limity a funkce dy a dx.

PŘÍKLAD:

ze scipy import integrovat a = lambda y, x: x * y ** 2 b = lambda x: 1 c = lambda x: -1 integrate.dblquad (a, 0, 2, b, c)

VÝSTUP:

-1.3333333333333335, 1.4802973661668755e-14)

SciPy poskytuje různé další funkce k vyhodnocení trojitých integrálů, n integrálů, Rombergových integrálů atd., Které můžete podrobněji prozkoumat. Chcete-li najít všechny podrobnosti o požadovaných funkcích, použijte funkci nápovědy.

Optimalizační funkce:

Scipy.optimize poskytuje řadu běžně používaných optimalizačních algoritmů, které lze vidět pomocí funkce nápovědy.

V zásadě se skládá z následujícího:

  • Neomezená a omezená minimalizace vícerozměrných skalárních funkcí, tj minimalizovat (např. BFGS, Newton Conjugate Gradient, Nelder_mead simplex atd.)
  • Globální optimalizační rutiny (např. Diferenciální_evoluce, dual_anealizace atd.)
  • Minimalizace nejmenších čtverců a přizpůsobení křivek (např. Nejméně_čtverečky, křivka_přesnost atd.)
  • Minimalizátory skalárních univariačních funkcí a vyhledávače kořenů (např. Minimal_scalar a root_scalar)
  • Řešitelé systému vícerozměrných rovnic využívající algoritmy jako hybrid Powell, Levenberg-Marquardt.

Funkce Rosenbrook:

Funkce Rosenbrook ( zběsile ) je testovací problém používaný pro optimalizační algoritmy založené na gradientu. V SciPy je definována takto:

rosen-Scipy tutorial-edurekaPŘÍKLAD:

import numpy jako np ze scipy.optimize import rosen a = 1,2 * np.arange (5) rosen (a)

VÝSTUP: 7371.0399999999945

Nelder-Mead:

TheNelder–Meadova metoda je numerická metoda často používaná k nalezení min / max funkce ve vícerozměrném prostoru. V následujícím příkladu se spolu s algoritmem Nelder-Mead používá metoda minimalizace.

PŘÍKLAD:

ze scipy import optimize a = [2,4, 1,7, 3,1, 2,9, 0,2] b = optimize.minimize (optimize.rosen, a, method = 'Nelder-Mead') b.x

VÝSTUP: pole ([0,96570182, 0,93255069, 0,86939478, 0,75497872, 0,56793357])

Interpolační funkce:

V oblasti numerické analýzy interpolace znamená konstrukci nových datových bodů v sadě známých datových bodů. Knihovna SciPy se skládá z dílčího balíčku s názvem scipy.interpolate, který se skládá zspline funkce a třídy, jednorozměrné a vícerozměrné (univariate a multivariate) interpolační třídy atd.

Jednorozměrná interpolace:

Jednorozměrná interpolace je v zásadě oblast křivky, kteránajde křivku, která poskytuje přesné přizpůsobení řadě dvojrozměrných datových bodů. SciPy poskytuje interp1d funkce, kterou lze použít k vytvoření jednorozměrné interpolace.

PŘÍKLAD:

import matplotlib.pyplot jako plt ze scipy import interpolace x = np.arange (5, 20) y = np.exp (x / 3.0) f = interpolate.interp1d (x, y) x1 = np.arange (6, 12) y1 = f (x1) # použít interpolační funkci vrácenou `interp1d` plt.plot (x, y, 'o', x1, y1, '-') plt.show ()

VÝSTUP:

Vícerozměrná interpolace:

Vícerozměrná interpolace(prostorovýinterpolace) je druhinterpolacena funkce, které se skládají z více než jedné proměnné. Následující příklad ukazuje příklad interp2d funkce.
Interpolace na 2-D mřížce pomocí funkce interp2d (x, y, z) v zásadě použije pole x, y, z k přiblížení některé funkce f: „z = f (x, y)“ a vrátí funkci, jejíž metoda volání používá spline interpolace najít hodnotu nových bodů.
PŘÍKLAD:

ze scipy import interpolace import matplotlib.pyplot jako plt x = np.arange (0,10) y = np.arange (10,25) x1, y1 = np.meshgrid (x, y) z = np.tan (xx + yy) f = interpolate.interp2d (x, y, z, kind = 'kubický') x2 = np.arange (2,8) y2 = np.arange (15,20) z2 = f (xnew, ynew) plt. plot (x, z [0,:], 'ro-', x2, z2 [0,:], '-') plt.show ()

VÝSTUP:

Funkce Fourierovy transformace:

Fourierova analýza je metoda, která se zabývá vyjádřením funkce jako součtu periodických složek a získáním signálu z těchto složek. The fft funkce lze použít k vrácení souborudiskrétní Fourierova transformace skutečné nebo komplexní sekvence.

PŘÍKLAD:

ze scipy.fftpack import fft, ifft x = np.array ([0,1,2,3]) y = fft (x) print (y)

VÝSTUP: [6. + 0.j -2. + 2.j -2. + 0.j -2.-2.j]

Podobně můžete najít inverzní funkci pomocí ifft funkce takto:

PŘÍKLAD:

rom scipy.fftpack import fft, ifft x = np.array ([0,1,2,3]) y = ifft (x) print (y)

VÝSTUP: [1,5 + 0,j -0,5-0,5j -0,5 + 0,j -0,5 + 0,5j]

Funkce zpracování signálu:

Zpracování signálu se zabýváanalyzuje, upravuje a syntetizuje signály, jako je zvuk, obrázky atd. SciPy poskytuje některé funkce, pomocí kterých můžete navrhovat, filtrovat a interpolovat jednorozměrná a dvourozměrná data.

Filtrování:

Filtrováním signálu z něj v zásadě odstraníte nežádoucí součásti. Chcete-li provést seřazené filtrování, můžete využít order_filter funkce. Tato funkce v podstatě provádí uspořádané filtrování na poli. Syntaxe této funkce je následující:

SYNTAX:
order_filter (a, doména, hodnocení)

a = N-rozměrné vstupní pole

doména = pole masky se stejným počtem rozměrů jako `a`

rank = Nezáporné číslo, které po seřazení vybere prvky ze seznamu (0 je nejmenší, následuje 1…)

PŘÍKLAD:

ze scipy import signálu x = np.arange (35) .reshape (7, 5) doména = np.identity (3) print (x, end = 'nn') print (signal.order_filter (x, doména, 1))

VÝSTUP:

[[0 1 2 3 4]
[5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]
[25 26 27 28 29]
[30 31 32 33 34]]

[[0. 1. 2. 3. 0.]
[5. 6. 7. 8. 3.]
[10. 11. 12. 13. 8.]
[patnáct. 16. 17. 18. 13.]
[dvacet. 21. 22. 23. 18.]
[25. 26. 27. 28. 23.]
[0. 25. 26. 27. 28.]]

Průběhy:

Podbalíček scipy.signal také sestává z různých funkcí, které lze použít ke generování průběhů. Jedna taková funkce je cvrlikání . Tato funkce je fgenerátor kosinusem potažený požadavkem a syntaxe je následující:

SYNTAX:
chirp (t, f0, t1, f1, method = ‘linear’, phi = 0, vertex_zero = True)

kde,

PŘÍKLAD:

ze scipy.signal import chirp, spektrogram import matplotlib.pyplot jako plt t = np.linspace (6, 10, 500) w = chirp (t, f0 = 4, f1 = 2, t1 = 5, metoda = 'lineární') plt.plot (t, w) plt.title ('Linear Chirp') plt.xlabel ('time in sec)') plt.show ()

VÝSTUP:

Lineární algebra:

Lineární algebra se zabývá lineárními rovnicemi a jejich reprezentacemi pomocí vektorových prostorů a matic. SciPy je postaven naKnihovny ATLAS LAPACK a BLAS a jeextrémně rychle řeší problémy spojené s lineární algebrou. Kromě všech funkcí z numpy.linalg poskytuje scipy.linalg také řadu dalších pokročilých funkcí. Pokud se numpy.linalg nepoužívá společně sPodpora ATLAS LAPACK a BLAS, scipy.linalg je rychlejší než numpy.linalg.

Hledání inverze matice:

Matematicky inverzní k matici Aje maticeBtakhleAB = jákdeje matice identity skládající se z jednotek dole na hlavní úhlopříčce označených jakoB = A-jeden. Ve SciPy lze tuto inverzi získat pomocí linalg.vv metoda.

PŘÍKLAD:

import numpy jako np ze scipy import linalg A = np.array ([[1,2], [4,3]]) B = linalg.inv (A) tisk (B)

VÝSTUP:

[[-0,6 0,4]
[0,8-0,2]]

Nalezení determinantů:

Hodnota odvozená aritmeticky z koeficientů matice je známá jako determinant čtvercové matice. Ve SciPy to lze provést pomocí funkce the který má následující syntaxi:

SYNTAX:
det (a, overwrite_a = False, check_finite = True)
kde,

a: (M, M) Je čtvercová matice

overwrite_a (bool, volitelné): Povolit přepisování dat v a

check_finite (bool, volitelný): Chcete-li zkontrolovat, zda se vstupní matice skládá pouze z konečných čísel

PŘÍKLAD:

import numpy jako np ze scipy import linalg A = np.array ([[1,2], [4,3]]) B = linalg.det (A) tisk (B)

VÝSTUP: -5,0

jak inicializovat třídu v pythonu

Řídké vlastní hodnoty:

Vlastní čísla jsou specifická sada skalárů spojených s lineárními rovnicemi. ARPACK vám umožňuje rychle najít vlastní čísla (vlastní vektory). Kompletní funkčnost ARPACKu je zabalena uvnitřdvě rozhraní na vysoké úrovni, která jsou scipy.sparse.linalg.eigs a scipy.sparse.linalg.eigsh. eigs. Rozhraní eigs umožňuje najít vlastní hodnoty skutečných nebo složitých nesymetrických čtvercových matic, zatímco rozhraní eigsh obsahuje rozhraní pro reálné symetrické nebo složitě hermitovské matice.

The osm funkce řeší zobecněný problém vlastních čísel pro složitou hermitovskou nebo skutečnou symetrickou matici.

PŘÍKLAD:

ze scipy.linalg import osm import numpy jako np A = np.array ([[1, 2, 3, 4], [4, 3, 2, 1], [1, 4, 6, 3], [2, 3, 2, 5]]) a, b = osm (A) print ('Selected eigenvalues:', a) print ('Complex ndarray:', b)

VÝSTUP:

Vybrané vlastní hodnoty: [-2,53382695 1,66735639 3,69488657 12,17158399]
Komplexní pole: [[0,69205614 0,5829305 0,25682823 -0,33954321]
[-0,68277875 0,46838936 0,03700454 -0,5595134]
[0,23275694 -0,29164622 -0,72710245 -0,57627139]
[0,02637572 -0,59644441 0,63560361 -0,48945525]]

Struktury prostorových dat a algoritmy:

Prostorová data se v zásadě skládají z objektů, které se skládají z čar, bodů, povrchů atd. Balíček scipy.spatial od SciPy může počítatVoronoiovy diagramy, triangulace atd. Pomocí knihovny Qhull. Skládá se také z implementací KDTree pro dotazy na bod nejbližšího souseda.

Delaunayovy triangulace:

Matematicky je Delaunayova triangulace pro sadu diskrétních bodů v rovině takovou triangulací, že žádný bod v dané sadě bodů neníuvnitř circumcircle libovolného trojúhelníku.

PŘÍKLAD:

import matplotlib.pyplot jako plt ze scipy.spatial import Delaunay body = np.array ([[0, 1], [1, 1], [1, 0], [0, 0]]) a = Delaunay (body) #Delaunay objekt print (a) print (a.simplices) plt.triplot (body [:, 0], body [:, 1], a.simplices) plt.plot (body [:, 1], body [:, 0], 'o') plt.show ()

VÝSTUP:

Funkce vícerozměrného zpracování obrazu:

Zpracování obrazu se v zásadě zabývá prováděním operací na obrázku za účelem načtení informací nebo získání vylepšeného obrazu z původního. Balíček scipy.ndimage se skládá z řadyfunkce zpracování a analýzy obrazu určené pro práci s poli libovolné rozměrnosti.

Konvoluce a korelace:

SciPy poskytuje řadu funkcí, které umožňují korelaci a konvoluci obrázků.

  • Funkce korelovat1d lze použít k výpočtu jednorozměrné korelace podél dané osy
  • Funkce korelát umožňuje vícerozměrnou korelaci libovolného daného pole se zadaným jádrem
  • Funkce convolve1d lze použít k výpočtu jednorozměrné konvoluce podél dané osy
  • Funkce vinout se umožňuje vícerozměrnou konvoluci libovolného daného pole se zadaným jádrem

PŘÍKLAD:

import numpy jako np ze scipy.ndimage import correlate1d correlate1d ([3,5,1,7,2,6,9,4], váhy = [1,2])

VÝSTUP: pole ([9, 13, 7, 15, 11, 14, 24, 17])

IO soubor:

Balíček scipy.io poskytuje řadu funkcí, které vám pomohou spravovat soubory různých formátů, jako jsou soubory MATLAB, soubory IDL, soubory Matrix Market atd.

Chcete-li tento balíček využít, budete jej muset importovat následujícím způsobem:

importovat scipy.io jako sio

Úplné informace o dílčím balení najdete v oficiálním dokumentu na Soubor IO .

Tím se dostáváme na konec tohoto výukového programu SciPy. Doufám, že jste vše pochopili jasně. Ujistěte se, že cvičíte co nejvíce .

Máte na nás dotaz? Uveďte to prosím v sekci komentářů tohoto blogu „SciPy Tutorial“ a my se vám ozveme co nejdříve.

Chcete-li získat podrobné znalosti o Pythonu a jeho různých aplikacích, můžete se zaregistrovat naživo s nepřetržitou podporou a doživotním přístupem.