Tutorial SciPy: Ce este Python SciPy și cum se folosește?



SciPy este o bibliotecă Python utilizată pentru rezolvarea problemelor științifice și matematice. NumPy vs SciPy. De bază, special, integrare, optimizare etc. cu exemple.

Matematica se ocupă cu un număr imens de concepte care sunt foarte importante, dar în același timp, complexe și consumatoare de timp. In orice caz, oferă biblioteca completă SciPy care rezolvă această problemă pentru noi. În acest tutorial SciPy, veți învăța cum să utilizați această bibliotecă împreună cu câteva funcții și exemplele lor.

ce este o eroare cheie

Înainte de a merge mai departe, aruncați o privire asupra tuturor subiectelor discutate în acest articol:





Asadar, haideti sa începem. :)

Ce este SciPy?

SciPy este o bibliotecă Python open-source care este utilizată pentru rezolvarea problemelor științifice și matematice. Este construit pe extensie și permite utilizatorului să manipuleze și să vizualizeze datele cu o gamă largă de comenzi la nivel înalt. După cum sa menționat mai devreme, SciPy se bazează pe NumPy și, prin urmare, dacă importați SciPy, nu este necesar să importați NumPy.



NumPy vs SciPy

Atât NumPy, cât și SciPy sunt utilizat pentru analiza matematică și numerică utilizată. NumPy conține date de matrice și operațiuni de bază, cum ar fi sortare, indexare, etc, în timp ce SciPy constă din tot codul numeric. Deși NumPy oferă o serie de care poate ajuta la rezolvarea algebrei liniare, transformate Fourier etc., SciPy este biblioteca care conține de fapt versiuni complet caracteristice ale acestor funcții împreună cu multe altele. Cu toate acestea, dacă efectuați analize științifice 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 o serie de subpachete pentru diverse calcule științifice care sunt prezentate în următorul tabel:

NumeDescriere
grupClustering algoritmi
constanteConstantele fizice și matematice
fftpackRutine de transformare Fourier rapidă
integraIntegrarea și rezolvarea obișnuită a ecuațiilor diferențiale
interpolaInterpolare și netezire spline
EuIntrare și ieșire
linalgAlgebră liniară
eu zborPrelucrarea imaginii N-dimensionale
odrRegresie ortogonală la distanță
optimizaRutine de optimizare și găsire a rădăcinilor
semnalProcesare semnal
rarMatrici rare și rutine asociate
spațialăStructuri de date spațiale și algoritmi
specialFuncții speciale
statisticiDistribuții și funcții statistice

Cu toate acestea, pentru o descriere detaliată, puteți urmări documentație oficială .



Aceste pachete trebuie importate exclusiv înainte de a le utiliza. De exemplu:

din clusterul de import scipy

Înainte de a analiza în detaliu fiecare dintre aceste funcții, să analizăm mai întâi funcțiile care sunt comune atât în ​​NumPy, cât și în SciPy.

Funcții de bază:

Interacțiunea cu NumPy:

SciPy se bazează pe NumPy și, prin urmare, puteți utiliza funcțiile NumPy în sine pentru a gestiona matricele. Pentru a cunoaște în detaliu aceste funcții, puteți folosi pur și simplu funcțiile help (), info () sau sursa ().

Ajutor():

Pentru a obține informații despre orice funcție, puteți utiliza Ajutor() funcţie. Există două moduri în care această funcție poate fi utilizată:

  • fără niciun parametru
  • folosind parametri

Iată un exemplu care arată ambele metode de mai sus:

din scipy import cluster help (cluster) #with parametru help () #without parametru

Când executați codul de mai sus, primul ajutor () returnează informațiile despre grup submodul. Al doilea ajutor () cere utilizatorului să introducă numele oricărui modul, cuvânt cheie etc. pentru care utilizatorul dorește să caute informații. Pentru a opri executarea acestei funcții, pur și simplu tastați „quit” și apăsați Enter.

info ():

Această funcție returnează informații despre ceea ce doriți , module etc.

scipy.info (cluster)

sursă():

Codul sursă este returnat numai pentru obiectele scrise în . Această funcție nu returnează informații utile în cazul în care metodele sau obiectele sunt scrise în orice altă limbă, cum ar fi C. Cu toate acestea, în cazul în care doriți să utilizaț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 comoditate, gamma, beta etc.Pentru a căuta toate funcțiile, puteți utiliza funcția help () așa cum a fost descris mai devreme.

Funcții exponențiale și trigonometrice:

Pachetul Special Function al SciPy oferă o serie de funcții prin care puteți găsi exponenți și rezolva probleme trigonometrice.

Luați în considerare următorul exemplu:

EXEMPLU:

de la 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.7071067811865475

Există multe alte funcții prezente în pachetul de funcții speciale al SciPy pe care le puteți încerca singur.

Funcții de integrare:

SciPy oferă o serie de funcții pentru rezolvarea integralelor. De la integratorul diferențial obișnuit la utilizarea regulilor trapezoidale pentru a calcula integralele, SciPy este un depozit de funcții pentru rezolvarea tuturor tipurilor de probleme de integrale.

Integrare generală:

SiPy oferă o funcție numită quad pentru a calcula integralul unei funcții care are o singură variabilă. Limitele pot fi ± & infin(± inf) pentru a indica limite infinite. Sintaxa funcției quad () este după cum urmează:

SINTAXĂ:

quad (func, a, b, args = (), full_output = 0, epsabs = 1.49e-08, epsrel = 1.49e-08, limit = 50, puncte = None, greutate = 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:

din import scipy special din import scipy integra 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 se execută acest cod, veți vedea următoarea ieșire.

IEȘIRE:

(3.9086503371292665, 4.3394735994897923e-14)

Funcție integrală dublă:

SciPy oferă dblquad care poate fi folosit pentru a calcula integralele duble. O integrală dublă, așa cum știm mulți dintre noi, constă din două variabile reale. Funcția dblquad () va lua funcția integrată ca parametru împreună cu alte 4 variabile care definesc limitele și funcțiile dy și dx.

EXEMPLU:

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

IEȘIRE:

-1.3333333333333335, 1.4802973661668755e-14)

SciPy oferă diverse alte funcții pentru a evalua integrale triple, n integrale, integrale Romberg, etc. pe care le puteți explora î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 frecvent utilizați, care pot fi văzuți folosind funcția de ajutor.

Practic constă din următoarele:

  • Minimizarea fără restricții și constrângere a funcțiilor scalare multivariate, adică minimiza (de exemplu, BFGS, Newton Conjugate Gradient, Nelder_mead simplex etc.)
  • Rutine de optimizare globală (de exemplu, diferențială_evoluție, dual_anealing etc.)
  • Minimizarea pătratelor minime și ajustarea curbei (de exemplu, minimum_squares, curve_fit etc.)
  • Minimizatoare și funcții de căutare a funcțiilor univariate scalare (de ex. Minim_scalar și root_scalar)
  • Rezolvarea sistemelor de ecuații multivariate folosind algoritmi precum Powell hibrid, Levenberg-Marquardt.

Funcția Rosenbrook:

Funcția Rosenbrook ( rosen ) este o problemă de testare utilizată pentru algoritmi de optimizare pe gradient. Acesta este definit după cum urmează în SciPy:

rosen-Scipy tutorial-edurekaEXEMPLU:

import numpy ca np de la scipy.optimize import rosen a = 1.2 * np.arange (5) rosen (a)

IEȘIRE: 7371.0399999999945

Nelder-Mead:

Nelder–Metoda Mead este o metodă numerică utilizată adesea pentru a găsi min / max al unei funcții într-un spațiu multidimensional. În exemplul următor, metoda de minimizare este utilizată împreună cu algoritmul Nelder-Mead.

EXEMPLU:

din importul scipy optimize a = [2.4, 1.7, 3.1, 2.9, 0.2] b = optimize.minimize (optimize.rosen, a, method = 'Nelder-Mead') b.x

IEȘIRE: matrice ([0.96570182, 0.93255069, 0.86939478, 0.75497872, 0.56793357])

Funcții de interpolare:

În domeniul analizei numerice, interpolare se referă la construirea de noi puncte de date într-un set de puncte de date cunoscute. Biblioteca SciPy constă dintr-un subpachet numit scipy.interpolate care constă dinfuncții și clase spline, clase de interpolare unidimensionale și multidimensionale (univariate și multivariate) etc.

Interpolare univariată:

Interpolația univariată este în esență o zonă de ajustare a curbei caregăsește curba care oferă o potrivire exactă unei serii de puncte de date bidimensionale. SciPy oferă interp1d funcție care poate fi utilizată pentru a produce interpolare univariată.

EXEMPLU:

import matplotlib.pyplot ca plt din scipy import interpola x = np.arange (5, 20) y = np.exp (x / 3.0) f = interpolate.interp1d (x, y) x1 = np.arange (6, 12) y1 = f (x1) # utilizați funcția de interpolare returnată de `interp1d` plt.plot (x, y, 'o', x1, y1, '-') plt.show ()

IEȘIRE:

Interpolare multivariată:

Interpolare multivariată(spațialinterpolare) este un felinterpolarepe funcții care constau din mai multe variabile. Următorul exemplu demonstrează un exemplu de interp2d funcţie.
Interpolarea pe o grilă 2-D folosind funcția interp2d (x, y, z) va folosi practic matricile x, y, z pentru a aproxima unele funcții f: „z = f (x, y)„ și returnează o funcție a cărei metodă de apelare o folosește interpolare spline pentru a găsi valoarea punctelor noi.
EXEMPLU:

din import scipy interpola import matplotlib.pyplot ca plt x = np.arange (0,10) y = np.arange (10,25) x1, y1 = np.meshgrid (x, y) z = np.tan (xx + yy) f = interpola.interp2d (x, y, z, kind = 'cubic') 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 ()

IEȘIRE:

Funcții de transformare Fourier:

Analiza Fourier este o metodă care se ocupă cu exprimarea unei funcții ca o sumă de componente periodice și recuperarea semnalului de la aceste componente. fft funcțiile pot fi utilizate pentru a returna fișierultransformată Fourier discretă a unei secvențe reale sau complexe.

EXEMPLU:

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

IEȘIRE: [6. + 0.j -2. + 2.j -2. + 0.j -2.-2.j]

În mod similar, puteți găsi inversul acestui lucru folosind ift funcționează după cum urmează:

EXEMPLU:

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

IEȘIRE: [1,5 + 0j -0,5-0,5j -0,5 + 0j -0,5 + 0,5j]

Funcții de procesare a semnalului:

Procesarea semnalului se ocupă deanalizând, modificând și sintetizând semnale precum sunet, imagini etc. SciPy oferă câteva funcții prin care puteți proiecta, filtra și interpola date unidimensionale și bidimensionale.

Filtrare:

Prin filtrarea unui semnal, eliminați practic componentele nedorite din acesta. Pentru a efectua filtrarea ordonată, puteți utiliza order_filter funcţie. Această funcție efectuează practic o filtrare ordonată pe o matrice. Sintaxa acestei funcții este următoarea:

SINTAXĂ:
order_filter (a, domeniu, rang)

a = matrice de intrare N-dimensională

domeniu = matrice de mască având același număr de dimensiuni ca `a`

rank = Număr non-negativ care selectează elemente din listă după ce a fost sortată (0 este cel mai mic urmat de 1 ...)

EXEMPLU:

de la semnalul de import scipy x = np.arange (35) .reshape (7, 5) domain = np.identity (3) print (x, end = 'nn') print (signal.order_filter (x, domain, 1))

IEȘIRE:

[[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.]
[cincisprezece. 16. 17. 18. 13.]
[douăzeci. 21. 22. 23. 18.]
[25. 26. 27. 28. 23.]
[0. 25. 26. 27. 28.]]

Forme de undă:

Subpachetul scipy.signal constă, de asemenea, din diverse funcții care pot fi utilizate pentru a genera forme de undă. O astfel de funcție este ciripit . Această funcție este fgenerator de cosinus măturat de necesitate și sintaxa este după cum urmează:

SINTAXĂ:
ciripit (t, f0, t1, f1, method = ’linear’, phi = 0, vertex_zero = True)

Unde,

EXEMPLU:

din scipy.signal import chirp, spectrogram import matplotlib.pyplot as plt t = np.linspace (6, 10, 500) w = chirp (t, f0 = 4, f1 = 2, t1 = 5, method = 'linear') plt.plot (t, w) plt.title ('Linear Chirp') plt.xlabel ('timp în sec)') plt.show ()

IEȘIRE:

Algebră liniară:

Algebra liniară se ocupă de ecuații liniare și reprezentări ale acestora folosind spații vectoriale și matrice. SciPy este construit peBibliotecile ATLAS LAPACK și BLAS și esteextrem de rapid în rezolvarea problemelor legate de algebra liniară. În plus față de toate funcțiile de la numpy.linalg, scipy.linalg oferă și o serie de alte funcții avansate. De asemenea, dacă numpy.linalg nu este utilizat împreună cuATLAS LAPACK și BLAS acceptă, scipy.linalg este mai rapid decât numpy.linalg.

Găsirea inversă a unei matrice:

Matematic, inversul unei matrice Aeste matriceaBastfel încâtAB = IUndeEueste matricea de identitate formată din cele de pe diagonala principală notată caB = A-unu. În SciPy, acest invers poate fi obținut folosind linalg.inv metodă.

EXEMPLU:

import numpy ca np de la scipy import linalg A = np.array ([[1,2], [4,3]]) B = linalg.inv (A) print (B)

IEȘIRE:

[[-0,6 0,4]
[0.8 -0.2]]

Găsirea factorilor determinanți:

Valoarea derivată aritmetic din coeficienții matricei este cunoscută ca determinant al unei matrice pătrate. În SciPy, acest lucru se poate face folosind o funcție care are următoarea sintaxă:

SINTAXĂ:
det (a, overwrite_a = False, check_finite = True)
Unde,

a: (M, M) Este o matrice pătrată

overwrite_a (bool, opțional): permite suprascrierea datelor într-un

check_finite (bool, opțional): Pentru a verifica dacă matricea de intrare constă numai din numere finite

EXEMPLU:

import numpy ca np de la scipy import linalg A = np.array ([[1,2], [4,3]]) B = linalg.det (A) print (B)

IEȘIRE: -5,0

Valori proprii rare:

Valorile proprii sunt un set specific de scalari legați de ecuații liniare. Dispozitivul ARPACK vă permite să găsiți valori proprii (vectori proprii) destul de repede. Funcționalitatea completă a ARPACK este inclusă îndouă interfețe la nivel înalt care sunt scipy.sparse.linalg.eigs și scipy.sparse.linalg.eigsh. eigs. Interfața eigs vă permite să găsiți valorile proprii ale matricilor pătrate nesimetrice reale sau complexe, în timp ce interfața eigsh conține interfețe pentru matricile real-simetrice sau complexe-hermitiene.

opta funcția rezolvă o problemă generală a valorii proprii pentru o matrice complexă hermitiană sau simetrică reală.

EXEMPLU:

din scipy.linalg import eigh import numpy as np A = np.array ([[1, 2, 3, 4], [4, 3, 2, 1], [1, 4, 6, 3], [2, 3, 2, 5]]) a, b = eigh (A) print ('Valori proprii selectate:', a) print ('Complex ndarray:', b)

IEȘIRE:

Valori proprii selectate: [-2.53382695 1.66735639 3.69488657 12.17158399]
Complex ndarray: [[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]]

Structuri și algoritmi de date spațiale:

Datele spațiale constau practic din obiecte care sunt alcătuite din linii, puncte, suprafețe etc. Pachetul scipy.spatial al SciPy poate calculaDiagrame Voronoi, triangulații, etc. folosind biblioteca Qhull. De asemenea, este alcătuit din implementări KDTree pentru interogări de puncte mai apropiate.

Triunghiurile Delaunay:

Matematic, triangulațiile Delaunay pentru un set de puncte discrete într-un plan este o triangulare astfel încât niciun punct din setul de puncte dat nu esteîn interiorul circumcercului oricărui triunghi.

EXEMPLU:

import matplotlib.pyplot ca plt din scipy.spatial import Delaunay points = np.array ([[0, 1], [1, 1], [1, 0], [0, 0]]) a = Delaunay (puncte) #Delaunay obiect print (a) print (a.simplici) plt.triplot (puncte [:, 0], puncte [:, 1], a.simplici) plt.plot (puncte [:, 1], puncte [:, 0], 'o') plt.show ()

IEȘIRE:

java util logging logger example

Funcții de procesare a imaginilor multidimensionale:

Prelucrarea imaginii se ocupă practic de efectuarea operațiilor pe o imagine pentru a prelua informații sau pentru a obține o imagine îmbunătățită din cea originală. Pachetul scipy.ndimage constă dintr-un număr defuncții de procesare și analiză a imaginilor concepute pentru a lucra cu tablouri de dimensionalitate arbitrară.

Convoluție și corelație:

SciPy oferă o serie de funcții care permit corelarea și convoluția imaginilor.

  • Functia correlate1d poate fi folosit pentru a calcula corelația unidimensională de-a lungul unei axe date
  • Functia corela permite corelarea multidimensională a oricărei matrice date cu nucleul specificat
  • Functia convolve1d poate fi folosit pentru a calcula convoluția unidimensională de-a lungul unei axe date
  • Functia împături permite convoluția multidimensională a oricărei matrice date cu nucleul specificat

EXEMPLU:

import numpy ca np de la scipy.ndimage import correlate1d correlate1d ([3,5,1,7,2,6,9,4], greutăți = [1,2])

IEȘIRE: matrice ([9, 13, 7, 15, 11, 14, 24, 17])

Fișier IO:

Pachetul scipy.io oferă o serie de funcții care vă ajută să gestionați fișiere de diferite formate, cum ar fi fișiere MATLAB, fișiere IDL, fișiere Matrix Market etc.

Pentru a utiliza acest pachet, va trebui să îl importați după cum urmează:

import scipy.io ca sio

Pentru informații complete despre subpachet, puteți consulta documentul oficial de pe Fișier IO .

Acest lucru ne aduce la sfârșitul acestui tutorial SciPy. Sper că ai înțeles totul clar. Asigurați-vă că exersați cât mai mult posibil .

Ai o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii a acestui blog „Tutorial SciPy” și vă vom contacta cât mai curând posibil.

Pentru a obține cunoștințe aprofundate despre Python împreună cu diferitele sale aplicații, vă puteți înscrie pentru live cu suport 24/7 și acces pe viață.