SciPy Tutorial – EdurekaMatematica se ocupă de un număr foarte mare de concepte care sunt foarte importante, dar, în același timp, complexe și consumatoare de timp. Cu toate acestea, Python pune la dispoziție biblioteca SciPy cu drepturi depline care ne rezolvă această problemă. În acest tutorial SciPy, veți învăța cum să folosiți această bibliotecă împreună cu câteva funcții și exemplele lor.
Înainte de a trece mai departe, aruncați o privire la toate subiectele discutate în acest articol:
- Ce este SciPy?
- NumPy vs SciPy
- Subpachete în SciPy
- Funcții de bază
- Funcții speciale
- Funcții de integrare
- Funcții de optimizare
- Funcții de transformare Fourier
- Semnale Funcții de procesare a semnalelor
- Algebră liniară
- Valori proprii disparate
- Structuri de date și algoritmi spațiali
- Funcții de procesare a imaginilor multidimensionale
- File IO
Să începem deci. 🙂
SciPy este o bibliotecă Python open-source care este folosită pentru a rezolva probleme științifice și matematice. Este construită pe extensia NumPy și permite utilizatorului să manipuleze și să vizualizeze date cu o gamă largă de comenzi de nivel înalt. După cum s-a menționat anterior, SciPy se bazează pe NumPy și, prin urmare, dacă importați SciPy, nu este nevoie să importați NumPy.
NumPy vs SciPy
Atât NumPy, cât și SciPy sunt biblioteci Python utilizate pentru analize matematice și numerice utilizate. NumPy conține date de matrice și operații de bază, cum ar fi sortarea, indexarea etc., în timp ce SciPy constă în tot codul numeric. Deși NumPy oferă o serie de funcții care pot ajuta la rezolvarea problemelor de algebră liniară, transformări Fourier etc., SciPy este biblioteca care conține, de fapt, versiuni complet echipate ale acestor funcții împreună cu multe altele. Cu toate acestea, dacă faceți analiză științifică folosind Python, va trebui să instalați atât NumPy, cât și SciPy, deoarece SciPy se bazează pe NumPy.
Subpachete în SciPy:
SciPy are un număr de subpachete pentru diverse calcule științifice care sunt prezentate în tabelul următor:
Cu toate acestea, pentru o descriere detaliată, puteți urmări documentația oficială.
Aceste pachete trebuie să fie importate exclusiv înainte de a le utiliza. De exemplu:
from scipy import cluster
Înainte de a analiza în detaliu fiecare dintre aceste funcții, să aruncăm mai întâi o privire asupra funcțiilor care sunt comune atât în NumPy, cât și în SciPy.
Interacțiunea cu NumPy:
SciPy se bazează pe NumPy și, prin urmare, puteți utiliza funcțiile NumPy în sine pentru a manipula array-uri. Pentru a cunoaște în profunzime aceste funcții, puteți utiliza pur și simplu funcțiile help(), info() sau source().
help():
Pentru a obține informații despre orice funcție, puteți utiliza funcția help(). Există două moduri în care poate fi utilizată această funcție:
- fără parametri
- cu ajutorul parametrilor
Iată un exemplu care prezintă ambele metode de mai sus:
from scipy import cluster
help(cluster) #with parameter
help() #without parameter
Când executați codul de mai sus, primul help() returnează informații despre submodulele cluster. A doua help() cere utilizatorului să introducă numele oricărui modul, cuvânt cheie, etc. pentru care dorește să caute informații. Pentru a opri execuția acestei funcții, este suficient să tastați ‘quit’ și să apăsați enter.
info():
Această funcție returnează informații despre funcțiile, modulele, etc. dorite.
scipy.info(cluster)
source():
Codul sursă este returnat numai pentru obiectele scrise în Python. Această funcție nu returnează informații utile în cazul în care metodele sau obiectele sunt scrise în orice alt limbaj, cum ar fi C. Cu toate acestea, în cazul în care doriți să folosiți această funcție, o puteți face după cum urmează:
scipy.source(cluster)
Funcții speciale:
SciPy oferă o serie de funcții speciale care sunt utilizate în fizica matematică, cum ar fi eliptica, funcții de conveniență, gamma, beta, etc. Pentru a căuta toate funcțiile, puteți utiliza funcția help() așa cum a fost descrisă anterior.
Funcții exponențiale și trigonometrice:
Pachetul Special Function al lui SciPy oferă un număr de funcții prin care puteți găsi exponenți și rezolva probleme trigonometrice.
Considerați următorul exemplu:
EXEMPLU:
from 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)
IEȘIRE:
1000.0
8.0
1.0
0.7071061067811865475
Există multe alte funcții prezente în pachetul de funcții speciale din SciPy pe care le puteți încerca singuri.
Funcții de integrare:
SciPy oferă o serie de funcții pentru rezolvarea integralelor. De la integratorul diferențial obișnuit până la utilizarea regulilor trapezoidale pentru a calcula integralele, SciPy este un depozit de funcții pentru a rezolva toate tipurile de probleme de integrale.
Integrare generală:
SiPy oferă o funcție numită quad pentru a calcula integrala unei funcții care are o singură variabilă. Limitele pot fi ( ) pentru a indica limitele infinite. Sintaxa funcției quad() este următoarea:
SYNTAX:
quad(func, a, b, args=(), full_output=0, epsabs=1.49e-08, epsrel=1.49e-08, limit=50, points=None, weight=None, wvar=None, wopts=None, maxp1=50, limlst=50)
Aici, funcția va fi integrată între limitele a și b (poate fi și infinită).
EXEMPLU:
from scipy import special
from scipy import integrate
a= lambda x:special.exp10(x)
b = scipy.integrate.quad(a, 0, 1)
print(b)
În exemplul de mai sus, funcția ‘a’ este evaluată între limitele 0, 1. Când acest cod este executat, veți vedea următoarea ieșire.
EXIT:
(3.9086503371292665, 4.3394735994897923e-14)
Funcție integrală dublă:
SciPy oferă dblquad care poate fi folosit pentru a calcula integralele duble. O integrală dublă, după cum mulți dintre noi știu, constă din două variabile reale. Funcția dblquad() va lua ca parametru funcția care urmează să fie integrată, împreună cu alte 4 variabile care definesc limitele și funcțiile dy și dx.
EXEMPLU:
from scipy import integrate
a = lambda y, x: x*y**2
b = lambda x: 1
c = lambda x: -1
integrate.dblquad(a, 0, 2, b, c)
SURSA:
-1.3333333333333333333335, 1.4802973661668755e-14)
SciPy oferă diverse alte funcții de evaluare a integralelor triple, a integralelor n, a integralelor Romberg, etc. pe care le puteți explora mai în detaliu. Pentru a găsi toate detaliile despre funcțiile necesare, utilizați funcția de ajutor.
Funcții de optimizare:
Scipy.optimize oferă o serie de algoritmi de optimizare utilizați în mod obișnuit, care pot fi văzuți utilizând funcția de ajutor.
Este format în principiu din următoarele:
- Minimizarea neconstrânsă și constrânsă a funcțiilor scalare multivariate, adică minimizarea (de exemplu BFGS, Newton Conjugate Gradient, Nelder_mead simplex, etc)
- Rutine de optimizare globală (de exemplu. differential_evolution, dual_annealing, etc)
- Minimizarea celor mai mici pătrate și ajustarea curbelor (ex. least_squares, curve_fit, etc)
- Minimizatoare de funcții scalare univariate și găsitori de rădăcini (ex. minimize_scalar și root_scalar)
- Soluționatoare de sisteme de ecuații multivariate care utilizează algoritmi precum Powell hibrid, Levenberg-Marquardt.
Funcția Rosenbrook:
Funcția Rosenbrook ( rosen) este o problemă de testare utilizată pentru algoritmii de optimizare pe bază de gradient. Este definită după cum urmează în SciPy: