„SciPy“ mokymo programa: kas yra „Python SciPy“ ir kaip juo naudotis?



„SciPy“ yra „Python“ biblioteka, naudojama sprendžiant mokslines ir matematines problemas. „NumPy“ ir „SciPy“. Basic, Special, Integration, Optimization ir kt. Su pavyzdžiais.

Matematikoje kalbama apie labai daug sąvokų, kurios yra labai svarbios, tačiau kartu sudėtingos ir užima daug laiko. Tačiau teikia visavertę „SciPy“ biblioteką, kuri mums išsprendžia šią problemą. Šioje „SciPy“ pamokoje sužinosite, kaip naudotis šia biblioteka kartu su keliomis funkcijomis ir jų pavyzdžiais.

Prieš eidami toliau, pažvelkite į visas šiame straipsnyje aptartas temas:



Taigi pradėkime. :)

Kas yra „SciPy“?

„SciPy“ yra atviro kodo „Python“ biblioteka, naudojama sprendžiant mokslo ir matematikos problemas. Jis pastatytas ant pratęsimą ir leidžia vartotojui manipuliuoti bei vizualizuoti duomenis naudojant įvairiausias aukšto lygio komandas. Kaip minėta anksčiau, „SciPy“ remiasi „NumPy“ ir todėl, jei importuojate „SciPy“, nereikia importuoti „NumPy“.



„NumPy“ ir „SciPy“

Tiek NumPy, tiek SciPy yra naudojama matematinei ir skaitinei analizei. NumPy yra masyvo duomenys ir pagrindinės operacijos, tokios kaip rūšiavimas, indeksavimas ir kt., O „SciPy“ sudaro visas skaitmeninis kodas. Nors „NumPy“ pateikia daugybę kuri gali padėti išspręsti tiesinę algebrą, Furjė transformacijas ir kt., „SciPy“ yra biblioteka, kurioje iš tikrųjų yra visų funkcijų šių funkcijų versijos kartu su daugeliu kitų. Tačiau jei atliekate mokslinę analizę naudodami „Python“, turėsite įdiegti tiek „NumPy“, tiek „SciPy“, nes „SciPy“ remiasi „NumPy“.

„SciPy“ paketai:

„SciPy“ turi daugybę pakuočių įvairiems moksliniams skaičiavimams, kurie parodyti šioje lentelėje:

vardasapibūdinimas
klasterisGrupavimo algoritmai
konstantosFizinės ir matematinės konstantos
fftpackGreita Furjė transformacijos rutina
integruotisIntegracijos ir įprasti diferencialinių lygčių sprendėjai
interpoliuokiteInterpoliacija ir šlaitų išlyginimas
Įvestis ir išvestis
linalgTiesinė algebra
aš skrenduN matmenų vaizdo apdorojimas
odrStačiakampio atstumo regresija
optimizuotiOptimizavimo ir šaknų paieškos rutinos
signalasSignalų apdorojimas
retasRetos matricos ir susijusios rutinos
erdvinisErdvinių duomenų struktūros ir algoritmai
ypatingasSpecialiosios funkcijos
statistikaStatistiniai pasiskirstymai ir funkcijos

Tačiau, norėdami gauti išsamų aprašymą, galite vadovautis oficialūs dokumentai .



Šias pakuotes reikia importuoti tik prieš jas naudojant. Pavyzdžiui:

iš klastingo importo klasterio

Prieš išsamiai apžvelgdami kiekvieną iš šių funkcijų, pirmiausia apžvelkime funkcijas, kurios yra įprastos tiek „NumPy“, tiek „SciPy“.

Pagrindinės funkcijos:

Sąveika su „NumPy“:

„SciPy“ remiasi „NumPy“ ir todėl jūs galite pats naudoti „NumPy“ funkcijas tvarkydami masyvus. Norėdami išsamiai sužinoti apie šias funkcijas, galite tiesiog pasinaudoti pagalbos (), informacijos () arba šaltinio () funkcijomis.

pagalba ():

Norėdami gauti informacijos apie bet kurią funkciją, galite pasinaudoti pagalba () funkcija. Šią funkciją galima naudoti dviem būdais:

  • be jokių parametrų
  • naudojant parametrus

Čia yra pavyzdys, parodantis abu anksčiau nurodytus metodus:

iš „scipy import“ grupės pagalbos (klasterio) #with parametro help () #without parametro

Kai vykdote pirmiau nurodytą kodą, pirmoji pagalba () pateikia informaciją apie klasteris submodulis. Antroji pagalba () prašo vartotojo įvesti bet kokio modulio, raktinio žodžio ir pan., Apie kurį vartotojas nori ieškoti informacijos, pavadinimą. Norėdami sustabdyti šios funkcijos vykdymą, tiesiog įveskite „quit“ ir paspauskite „Enter“.

rūšiuoti c ++

informacija ():

Ši funkcija pateikia informaciją apie norimą , moduliai ir kt.

scipy.info (klasteris)

šaltinis ():

Šaltinio kodas grąžinamas tik objektams, parašytiems . Ši funkcija negrąžina naudingos informacijos, jei metodai ar objektai parašyti kita kalba, pavyzdžiui, C. Tačiau jei norite pasinaudoti šia funkcija, galite tai padaryti taip:

scipy.source (klasteris)

Specialios funkcijos:

„SciPy“ suteikia daugybę specialių funkcijų, kurios naudojamos matematinėje fizikoje, pavyzdžiui, elipsės, patogumo funkcijos, gama, beta ir kt.Norėdami ieškoti visų funkcijų, galite naudoti pagalbos () funkciją, kaip aprašyta anksčiau.

Eksponentinės ir trigonometrinės funkcijos:

„SciPy“ specialiųjų funkcijų paketas suteikia daugybę funkcijų, per kurias galite rasti rodiklius ir išspręsti trigonometrines problemas.

Apsvarstykite šį pavyzdį:

PAVYZDYS:

iš „scipy“ importo specialus a = special.exp10 (3) print (a) b = special.exp2 (3) print (b) c = special.sindg (90) print (c) d = special.cosdg (45) print ( d)

IŠĖJIMAS:

1000,0
8.0
1.0
0.7071067811865475

„SciPy“ specialiųjų funkcijų pakete yra daugybė kitų funkcijų, kurias galite išbandyti patys.

Integravimo funkcijos:

„SciPy“ pateikia daugybę funkcijų integralams išspręsti. Skaičiuojant nuo įprasto diferencialo integratoriaus iki trapecijos formos taisyklių skaičiuojant integralus, „SciPy“ yra funkcijų saugykla, skirta išspręsti visų tipų integralų problemas.

Bendroji integracija:

SiPy pateikia pavadintą funkciją keturračiai apskaičiuoti funkcijos, turinčios vieną kintamąjį, integralą. Ribos gali būti ± ir begalinis(± inf) nurodyti begalines ribas. Funkcijos „quad ()“ sintaksė yra tokia:

Sintaksė:

quad (func, a, b, args = (), full_output = 0, epsabs = 1.49e-08, epsrel = 1.49e-08, limit = 50, points = Nėra, svoris = Nėra, wvar = Nėra, wopts = Nėra , maxp1 = 50, limlst = 50)

Čia funkcija bus integruota tarp ribų a ir b (taip pat gali būti begalinė).

PAVYZDYS:

iš scipy import specialus iš scipy import integruoti a = lambda x: special.exp10 (x) b = scipy.integrate.quad (a, 0, 1) print (b)

Ankstesniame pavyzdyje funkcija „a“ vertinama tarp 0, 1 ribų. Kai šis kodas bus įvykdytas, pamatysite šį išėjimą.

IŠĖJIMAS:

(3.9086503371292665, 4.3394735994897923e-14)

Dviguba integruota funkcija:

„SciPy“ teikia dblquad kad galima apskaičiuoti dvigubus integralus. Dvigubą integralą, kaip žino daugelis iš mūsų, sudaro du realūs kintamieji. Funkcija „dblquad ()“ bus integruota kaip parametras kartu su 4 kitais kintamaisiais, apibrėžiančiais ribas ir funkcijas dy ir dx.

PAVYZDYS:

iš „scipy import“ integruoti a = lambda y, x: x * y ** 2 b = lambda x: 1 c = lambda x: -1 integruoti.dblquad (a, 0, 2, b, c)

IŠĖJIMAS:

-1,3333333333333335, 1,4802973661668755e-14)

„SciPy“ teikia įvairias kitas funkcijas, skirtas įvertinti trigubus, n integralus, „Romberg“ integralus ir kt., Kurias galite išsamiau išnagrinėti. Norėdami rasti visą išsamią informaciją apie reikalingas funkcijas, naudokite pagalbos funkciją.

Optimizavimo funkcijos:

Scipy.optimize pateikia daugybę dažniausiai naudojamų optimizavimo algoritmų, kuriuos galima pamatyti naudojant pagalbos funkciją.

Iš esmės jį sudaro:

  • Nevaržomas ir suvaržytas daugiamatės skaliarinių funkcijų minimizavimas, t sumažinti (pvz., BFGS, Newton Conjugate Gradient, Nelder_mead simplex ir kt.)
  • Visuotinės optimizavimo rutinos (pvz., Diferencinė_evoliucija, dvigubas apdorojimas ir kt.)
  • Mažiausia kvadratų sumažinimas ir kreivės pritaikymas (pvz., Mažiausias_kvadratai, kreivės_fit ir tt)
  • Skaliarinės vienkartinės funkcijos mažinimo priemonės ir šaknų ieškikliai (pvz., Minimize_scalar ir root_scalar)
  • Daugialypės lygčių sistemos sprendėjai, naudojantys tokius algoritmus kaip hibridiniai Powellas, Levenbergas-Marquardtas.

„Rosenbrook“ funkcija:

Rosenbrook funkcija ( rosenas ) yra bandymo problema, naudojama gradientu pagrįstiems optimizavimo algoritmams. „SciPy“ jis apibrėžiamas taip:

„rosen-Scipy“ pamoka-edurekaPAVYZDYS:

importuoti numerį kaip np iš „scipy“. optimizuoti importo „rosen“ a = 1,2 * „np.“ diapazonas (5)

IŠĖJIMAS: 7371.0399999999945

Nelder-Mead:

TheNelderis–Mead metodas yra skaitinis metodas, dažnai naudojamas norint rasti funkcijos min / max daugialypėje erdvėje. Šiame pavyzdyje minimizavimo metodas naudojamas kartu su Nelder-Mead algoritmu.

PAVYZDYS:

iš „scipy import“ optimizuoti a = [2.4, 1.7, 3.1, 2.9, 0.2] b = optimize.minimize (optimize.rosen, a, method = 'Nelder-Mead') b.x

IŠĖJIMAS: masyvas ([0.96570182, 0.93255069, 0.86939478, 0.75497872, 0.56793357])

Interpoliavimo funkcijos:

Skaitinės analizės srityje interpoliacija reiškia naujų duomenų taškų sukūrimą žinomų duomenų taškų rinkinyje. „SciPy“ biblioteką sudaro paketas, pavadintas scipy.interpolate, kurį sudarospline funkcijos ir klasės, vienmatės ir daugialypės (vienmačiai ir daugiamatės) interpoliacijos klasės ir kt.

Vienkartinė interpoliacija:

Vieno kintamojo interpoliacija iš esmės yra kreivės pritaikymo sritissuranda kreivę, kuri tiksliai tinka dviejų matmenų duomenų taškų serijai. „SciPy“ teikia interp1d funkcija, kuri gali būti naudojama kuriant vienodę interpoliaciją.

PAVYZDYS:

importuoti matplotlib.pyplot kaip plt iš „scipy“ importavimo interpolato x = np.arange (5, 20) y = np.exp (x / 3.0) f = interpolate.interp1d (x, y) x1 = np.arange (6, 12) y1 = f (x1) # naudoti interpoliacijos funkciją, kurią grąžino „interp1d“ plt.plot (x, y, „o“, x1, y1, '-') plt.show ()

IŠĖJIMAS:

Daugialypė interpoliacija:

Daugiamatė interpoliacija(erdvinisinterpoliacija) yra natūrainterpoliacijaapie funkcijas, kurias sudaro daugiau nei vienas kintamasis. Šis pavyzdys demonstruoja interp2d funkcija.
Interpoliuojant per 2-D tinklelį, naudojant funkciją interp2d (x, y, z), iš esmės bus naudojamos x, y, z masyvai, kad būtų galima apytiksliai nustatyti funkciją f: „z = f (x, y)“ ir grąžina funkciją, kurios skambinimo metodas naudojamas spline interpoliacija rasti naujų taškų vertę.
PAVYZDYS:

iš „scipy import“ interpolato importo matplotlib.pyplot kaip plt x = np.arange (0,10) y = np.arange (10,25) x1, y1 = np.meshgrid (x, y) z = np.tan (xx + yy) f = interpolatas.interp2d (x, y, z, natūra = 'kubinis') x2 = np.arange (2,8) y2 = np.arange (15,20) z2 = f (xnew, ynew) plt. siužetas (x, z [0,:], 'ro-', x2, z2 [0,:], '-') plt.show ()

IŠĖJIMAS:

Furjė transformacijos funkcijos:

Furjė analizė yra metodas, skirtas nagrinėti funkciją kaip periodinių komponentų sumą ir atkurti signalą iš tų komponentų. The fft funkcijos gali būti naudojamos norint grąžintitikrosios ar sudėtingos sekos diskretioji Furjė transformacija.

PAVYZDYS:

iš scipy.fftpack importuoti fft, ifft x = np.array ([0,1,2,3]) y = fft (x) spausdinti (y)

IŠĖJIMAS: [6. + 0.j -2. + 2.j -2. + 0.j -2.-2.j]

Panašiai galite rasti atvirkštinę tai naudodami ifft veikia taip:

PAVYZDYS:

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

IŠĖJIMAS: [1,5 + 0,j -0,5-0,5j -0,5 + 0,j -0,5 + 0,5j]

Signalo apdorojimo funkcijos:

Signalų apdorojimas susijęs suanalizuoti, modifikuoti ir sintetinti signalus, tokius kaip garsas, vaizdai ir kt. „SciPy“ pateikia keletą funkcijų, kuriomis galite kurti, filtruoti ir interpoluoti vienmatius ir dvimatius duomenis.

Filtravimas:

Filtruodami signalą iš esmės pašalinate iš jo nepageidaujamus komponentus. Norėdami atlikti užsakytą filtravimą, galite naudoti užsakymo_filtras funkcija. Ši funkcija iš esmės atlieka masyvo užsakytą filtravimą. Šios funkcijos sintaksė yra tokia:

Sintaksė:
order_filter (a, domenas, rangas)

a = N matmenų įvesties masyvas

domenas = kaukių masyvas, kurio matmenų skaičius yra toks pat kaip „a“

rangas = Neigiamas skaičius, kuris pasirenka elementus iš sąrašo po jo rūšiavimo (0 yra mažiausias, po kurio seka 1…)

PAVYZDYS:

iš „scipy“ importo signalo x = np.arange (35) .reshape (7, 5) domain = np.identity (3) print (x, end = 'nn') print (signal.order_filter (x, domain, 1))

IŠĖJIMAS:

[[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.]
[penkiolika. 16. 17. 18. 13.]
[dvidešimt. 21. 22. 23. 18.]
[25. 26. 27. 28. 23.]
[0. 25. 26. 27. 28.]]

Bangos formos:

„Scipy.signal“ paketą taip pat sudaro įvairios funkcijos, kurios gali būti naudojamos bangų formoms generuoti. Viena iš tokių funkcijų yra čiulbėti . Ši funkcija yra frekvizito nušluotas kosinuso generatorius ir sintaksė yra tokia:

Sintaksė:
čiulbesys (t, f0, t1, f1, metodas = ’tiesinis’, phi = 0, vertex_zero = True)

kur,

PAVYZDYS:

iš scipy.signal importo čiulbėjimo, spektrogramos importo matplotlib.pyplot kaip plt t = np.linspace (6, 10, 500) w = chirp (t, f0 = 4, f1 = 2, t1 = 5, method = 'tiesinis') plt.plot (t, w) plt.title ('Linear Chirp') plt.xlabel ('laikas sekundėmis' ') plt.show ()

IŠĖJIMAS:

Tiesinė algebra:

Tiesinė algebra nagrinėja tiesines lygtis ir jų reprezentacijas naudodama vektorių tarpus ir matricas. „SciPy“ yra sukurtasATLAS LAPACK ir BLAS bibliotekos ir yraypač greitai sprendžiant su linijine algebra susijusias problemas. Be visų numpy.linalg funkcijų, scipy.linalg taip pat yra daugybė kitų pažangių funkcijų. Taip pat, jei „numpy.linalg“ nenaudojamas kartu su„ATLAS LAPACK“ ir „BLAS“ palaikymas, scipy.linalg yra greitesnis nei numpy.linalg.

Matricos atvirkštinės radimas:

Matematiškai matricos atvirkštinė Ayra matricaBtoks kadAB = Aškuryra tapatumo matrica, susidedanti iš pagrindinių įstrižainių, žymimų kaipB = A-vienas. Programoje „SciPy“ šią atvirkštinę reikšmę galima gauti naudojant linalg.inv metodas.

PAVYZDYS:

importuoti numerį kaip np iš „scipy“ importo linalg A = np.dabalys ([[1,2], [4,3]]) B = linalg.inv (A) spausdinti (B)

IŠĖJIMAS:

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

Lemiančių veiksnių radimas:

Armatmetiniu būdu iš matricos koeficientų gauta vertė yra žinoma kaip kvadratinės matricos determinantas. „SciPy“ tai galima padaryti naudojant funkciją kurios sintaksė yra tokia:

Sintaksė:
det (a, perrašyti_a = klaidinga, patikrinti_ baigtine = tiesa)
kur,

a: (M, M) yra kvadratinė matrica

perrašyti_a (talpa, neprivaloma): leisti perrašyti duomenis a

check_finite (talpa, neprivaloma): Norėdami patikrinti, ar įvesties matricą sudaro tik baigtiniai skaičiai

PAVYZDYS:

importuoti numerį kaip np iš „scipy“ importo linalg A = np.dabelis ([[1,2], [4,3]]) B = linalg.det (A) spausdinti (B)

IŠĖJIMAS: -5,0

Retos savinės vertės:

Atskiros vertės yra konkretus skaliarų rinkinys, susietas su tiesinėmis lygtimis. ARPACK suteikia galimybę gana greitai surasti savąsias vertes (savivektorius). Pilnas ARPACK funkcionalumas yra supakuotasdvi aukšto lygio sąsajos, kurios yra scipy.sparse.linalg.eigs ir scipy.sparse.linalg.eigsh. eigs. „Eigs“ sąsaja leidžia jums rasti realių arba sudėtingų nesimetriškų kvadratinių matricų savąsias reikšmes, o „eigsh“ sąsajoje yra realios simetriškos arba kompleksinės-hermitinės matricos.

The aštuoni funkcija išsprendžia apibendrintą sudėtinės Hermitijos arba tikrosios simetriškos matricos savosios vertės problemą.

PAVYZDYS:

iš scipy.linalg importuokite aštuonis importo numerius kaip np A = np.array ([[1, 2, 3, 4], [4, 3, 2, 1], [1, 4, 6, 3], [2, 3, 2, 5]]) a), b = aštuonis (A) spausdinimas ('Pasirinktos savinės vertės:', a) spausdinti ('Sudėtingas ndarray:', b)

IŠĖJIMAS:

Pasirinktos savinės vertės: [-2.53382695 1.66735639 3.69488657 12.17158399]
Kompleksinis 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]]

Erdvinių duomenų struktūros ir algoritmai:

Erdviniai duomenys iš esmės susideda iš objektų, sudarytų iš linijų, taškų, paviršių ir kt. „SciPy“ scipy.spatial paketas gali apskaičiuotiVoronoi diagramos, trianguliacijos ir kt., Naudojant Qhull biblioteką. Jį taip pat sudaro „KDTree“ diegimai artimiausio kaimyno taško užklausoms.

Delaunay trikampiai:

Matematiškai Delaunay trianguliacijos diskrečių taškų rinkiniui plokštumoje yra tokios trikampio formos, kad nė vienas taškas pateiktame taškų rinkinyje nėrabet kurio trikampio apskritimo viduje.

PAVYZDYS:

importuoti matplotlib.pyplot kaip plt iš scipy.spatial importuoti Delaunay taškus = np.array ([[0, 1], [1, 1], [1, 0], [0, 0]]) a = Delaunay (taškai) #Delaunay objekto spausdinimas (a) spausdinimas (paprastos) plt.triplot (taškai [:, 0], taškai [:, 1], a.planai) plt.plot (taškai [:, 1], taškai [:, 0], „o“) plt.show ()

IŠĖJIMAS:

kas yra charat java

Daugialypės vaizdo apdorojimo funkcijos:

Vaizdo apdorojimas iš esmės susijęs su paveikslėlio operacijų atlikimu, norint gauti informacijos arba gauti patobulintą vaizdą iš originalo. Paketą „scipy.ndimage“ sudaro daugybėvaizdo apdorojimo ir analizės funkcijos, skirtos dirbti su savavališko matmenų masyvais.

Konvoliucija ir koreliacija:

„SciPy“ suteikia daugybę funkcijų, leidžiančių koreliuoti ir susieti vaizdus.

  • Funkcija koreliuoja1d gali būti naudojamas apskaičiuojant vienos dimensijos koreliaciją išilgai tam tikros ašies
  • Funkcija koreliuoja leidžia daugialypę bet kurio masyvo koreliaciją su nurodytu branduoliu
  • Funkcija convolve1d gali būti naudojamas apskaičiuojant vienos dimensijos konvekciją išilgai tam tikros ašies
  • Funkcija susisukti leidžia daugialypę bet kurio masyvo konvoliuciją su nurodytu branduoliu

PAVYZDYS:

importuoti numerį kaip np iš scipy.ndimage importuoti correlate1d correlate1d ([3,5,1,7,2,6,9,4], svoriai = [1,2])

IŠĖJIMAS: masyvas ([9, 13, 7, 15, 11, 14, 24, 17])

IO failas:

Pakete scipy.io pateikiama daugybė funkcijų, kurios padeda valdyti įvairių formatų failus, pvz., MATLAB failus, IDL failus, „Matrix Market“ failus ir kt.

Norėdami naudoti šį paketą, turėsite jį importuoti taip:

importuoti scipy.io kaip sio

Išsamią informaciją apie pakuotes galite rasti oficialiame dokumente Failas IO .

Tai padės mums baigti šią „SciPy“ mokymo programą. Tikiuosi, kad viską supratote aiškiai. Įsitikinkite, kad praktikuojate kuo daugiau .

Turite mums klausimą? Prašau tai paminėti šio „SciPy Tutorial“ tinklaraščio komentarų skyriuje, ir mes kuo greičiau susisieksime su jumis.

Norėdami gauti išsamių žinių apie „Python“ kartu su įvairiomis jo programomis, galite užsiregistruoti tiesiogiai su parą visą parą ir visą gyvenimą.