SciPy-opetusohjelma: Mikä on Python SciPy ja miten sitä käytetään?



SciPy on Python-kirjasto, jota käytetään tieteellisten ja matemaattisten ongelmien ratkaisemiseen. NumPy vs SciPy. Basic, Special, Integration, Optimization jne., Esimerkkejä.

Matematiikassa käsitellään valtavaa määrää käsitteitä, jotka ovat erittäin tärkeitä, mutta samalla monimutkaisia ​​ja aikaa vieviä. Kuitenkin, tarjoaa täysimittaisen SciPy-kirjaston, joka ratkaisee tämän ongelman puolestamme. Tässä SciPy-opetusohjelmassa opit käyttämään tätä kirjastoa sekä muutamia toimintoja ja niiden esimerkkejä.

Ennen kuin jatkat, tutustu kaikkiin tässä artikkelissa käsiteltyihin aiheisiin:





Joten aloitetaan. :)

Mikä on SciPy?

SciPy on avoimen lähdekoodin Python-kirjasto, jota käytetään tieteellisten ja matemaattisten ongelmien ratkaisemiseen. Se on rakennettu laajennus ja antaa käyttäjän manipuloida ja visualisoida tietoja laajalla joukolla korkean tason komentoja. Kuten aiemmin mainittiin, SciPy perustuu NumPy-järjestelmään, joten jos tuot SciPy-sovellusta, NumPyä ei tarvitse tuoda.



NumPy vs SciPy

Sekä NumPy että SciPy ovat käytetään matemaattiseen ja numeeriseen analyysiin. NumPy sisältää taulukotiedot ja perustoiminnot, kuten lajittelun, indeksoinnin jne., Kun taas SciPy koostuu kaikesta numeerisesta koodista. Vaikka NumPy tarjoaa useita joka voi auttaa ratkaisemaan lineaarisen algebran, Fourier-muunnokset jne., SciPy on kirjasto, joka sisältää näiden toimintojen täysin varustellut versiot monien muiden ohella. Jos kuitenkin teet tieteellistä analyysiä Pythonilla, sinun on asennettava sekä NumPy että SciPy, koska SciPy perustuu NumPyyn.

Alipaketit SciPyssä:

SciPyllä on useita alipaketteja erilaisille tieteellisille laskelmille, jotka on esitetty seuraavassa taulukossa:

NimiKuvaus
klusteriRyhmittelyalgoritmit
vakiotFyysiset ja matemaattiset vakiot
fftpackNopeat Fourier-muunnosrutiinit
integroidaIntegrointi ja tavalliset differentiaaliyhtälön ratkaisijat
interpoloidaInterpolaatio ja tasoitusviivat
MinäTulo ja lähtö
linalgLineaarialgebra
minä lennänN-ulotteinen kuvankäsittely
odrOrtogonaalinen etäisyyden regressio
optimoidaOptimointi ja juurihaku rutiinit
signaaliSignaalinkäsittely
harvaHarvat matriisit ja niihin liittyvät rutiinit
tilaPaikkatietorakenteet ja algoritmit
erityinenErikoistoiminnot
tilastotTilastolliset jakaumat ja toiminnot

Yksityiskohtaisen kuvauksen saat kuitenkin seuraamalla viralliset asiakirjat .



Nämä paketit on tuotava yksinomaan ennen niiden käyttöä. Esimerkiksi:

scipy-tuontiklusterista

Ennen kuin tarkastelemme näitä toimintoja yksityiskohtaisesti, katsotaan ensin toiminnot, jotka ovat yleisiä sekä NumPyssä että SciPyssä.

Perustoiminnot:

Vuorovaikutus NumPyn kanssa:

SciPy perustuu NumPy-järjestelmään ja siksi voit käyttää NumPy-toimintoja itse käsitellessäsi taulukoita. Jos haluat tietää perusteellisesti näistä toiminnoista, voit yksinkertaisesti käyttää apua (), info () tai lähde () -toimintoja.

auta():

Saadaksesi tietoja toiminnoista, voit käyttää auta() toiminto. Tätä toimintoa voidaan käyttää kahdella tavalla:

  • ilman parametreja
  • parametrien avulla

Tässä on esimerkki, joka näyttää molemmat yllä olevista menetelmistä:

scipy-tuontiryhmän ohjeesta (klusteri) #parametriapuella () #parametrina

Kun suoritat yllä olevan koodin, ensimmäinen ohje () palauttaa tiedot klusteri alamoduuli. Toinen ohje () pyytää käyttäjää syöttämään minkä tahansa moduulin, avainsanan jne. Nimen, josta käyttäjä haluaa hakea tietoa. Voit lopettaa tämän toiminnon suorittamisen kirjoittamalla ”quit” ja painamalla Enter.

tiedot():

Tämä toiminto palauttaa tietoja halutusta , moduulit jne.

scipy.info (klusteri)

lähde():

Lähdekoodi palautetaan vain kohteille, jotka on kirjoitettu . Tämä toiminto ei palauta hyödyllistä tietoa, jos menetelmät tai objektit kirjoitetaan jollakin muulla kielellä, kuten C.Kun kuitenkin haluat käyttää tätä toimintoa, voit tehdä sen seuraavasti:

scipy.source (klusteri)

Erikoistoiminnot:

SciPy tarjoaa useita erikoistoimintoja, joita käytetään matemaattisessa fysiikassa, kuten elliptisiä, mukavuusfunktiot, gamma, beeta jne.Voit etsiä kaikkia toimintoja käyttämällä aiemmin kuvattua help () -toimintoa.

Eksponentiaaliset ja trigonometriset toiminnot:

SciPy's Special Function -paketti tarjoaa useita toimintoja, joiden avulla voit löytää eksponentteja ja ratkaista trigonometrisiä ongelmia.

Harkitse seuraavaa esimerkkiä:

ESIMERKKI:

scipy-tuonnista erityinen a = special.exp10 (3) print (a) b = special.exp2 (3) print (b) c = special.sindg (90) print (c) d = special.cosdg (45) print ( d)

LÄHTÖ:

1000,0
8.0
1.0
0,7071067811865475

SciPyn erikoistoimintopaketissa on monia muita toimintoja, joita voit kokeilla itse.

Integrointitoiminnot:

SciPy tarjoaa useita toimintoja integraalien ratkaisemiseksi. SciPy on tavallisesta differentiaaliintegraattorista trapetsimuotoisten sääntöjen käyttöön integraalien laskemiseksi, ja se on toimintojen varasto kaikenlaisten integraaliongelmien ratkaisemiseksi.

Yleinen integraatio:

SiPy tarjoaa funktion nimeltä quad laskea funktion integraali, jolla on yksi muuttuja. Rajat voivat olla ± & ääretön(± inf) osoittaa äärettömät rajat. Quad () -funktion syntaksit ovat seuraavat:

SYNTAKSI:

quad (func, a, b, args = (), full_output = 0, epsabs = 1.49e-08, epsrel = 1.49e-08, raja = 50, pistettä = ei mitään, paino = ei mitään, wvar = ei mitään, wopts = ei mitään , maxp1 = 50, limlst = 50)

Tässä toiminto integroidaan rajojen a ja b väliin (voi olla myös ääretön).

ESIMERKKI:

scipy-tuonnista erityinen scipy-tuonnista integroi a = lambda x: special.exp10 (x) b = scipy.integrate.quad (a, 0, 1) print (b)

Yllä olevassa esimerkissä funktio ‘a’ arvioidaan rajojen 0, 1 välillä. Kun tämä koodi suoritetaan, näet seuraavan lähdön.

LÄHTÖ:

(3.9086503371292665, 4.3394735994897923e-14)

Kaksinkertainen kiinteä toiminto:

SciPy tarjoaa dblquad jota voidaan käyttää kaksoisintegraalien laskemiseen. Kaksinkertainen integraali, kuten monet meistä tietävät, koostuu kahdesta todellisesta muuttujasta. Dblquad () -funktio ottaa funktion integroitavaksi sen parametriksi yhdessä 4 muun muuttujan kanssa, jotka määrittelevät rajat ja funktiot dy ja dx.

ESIMERKKI:

scipy-tuonnista integroi a = lambda y, x: x * y ** 2 b = lambda x: 1 c = lambda x: -1 integroi. dblquad (a, 0, 2, b, c)

LÄHTÖ:

mitä sarjoitetaan jaavassa

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

SciPy tarjoaa useita muita toimintoja kolmen integraalin, n integraalin, Romberg integraalin jne. Arvioimiseksi, joita voit tutkia tarkemmin. Löydät kaikki tarvittavat toiminnot yksityiskohdista ohjetoiminnon avulla.

Optimointitoiminnot:

Scipy.optimize tarjoaa useita yleisesti käytettyjä optimointialgoritmeja, jotka voidaan nähdä ohjetoiminnolla.

Se koostuu periaatteessa seuraavista:

  • Rajoittamaton ja rajoitettu minimointi monen muuttujan skalaaritoiminnot, ts minimoida (esim. BFGS, Newton-konjugaattigradientti, Nelder_mead simplex jne.)
  • Globaalit optimointirutiinit (esim. Differentiaalinen evoluutio, kaksoisvaroitus jne.)
  • Pienimmän neliösumman minimointi ja käyrän sovitus (esim. Pienimmät neliöt, käyrän sopivat jne.)
  • Skaalaariset yksimuuttujafunktioiden minimoijat ja juurihakijat (esim. Minimoi_skalaari ja juurikohta)
  • Monimuuttujayhtälöjärjestäjät, jotka käyttävät algoritmeja, kuten hybridi Powell, Levenberg-Marquardt.

Rosenbrook-toiminto:

Rosenbrook-toiminto ( rosen ) on testiongelma, jota käytetään gradienttipohjaisiin optimointialgoritmeihin. Se määritellään SciPyssä seuraavasti:

rosen-Scipy tutorial-edurekaESIMERKKI:

Tuo numero niin kuin np scipy-tiedostosta. optimoi tuonti rosen a = 1,2 * np. alue (5) rosen (a)

LÄHTÖ: 7371.0399999999945

Nelder-Mead:

Nelder–Mead-menetelmä on numeerinen menetelmä, jota käytetään usein funktion min / max löytämiseen moniulotteisesta avaruudesta. Seuraavassa esimerkissä minimointimenetelmää käytetään yhdessä Nelder-Mead-algoritmin kanssa.

ESIMERKKI:

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

LÄHTÖ: taulukko ([0.96570182, 0.93255069, 0.86939478, 0.75497872, 0.56793357])

Interpolaatiotoiminnot:

Numeerisen analyysin alalla interpoloinnilla tarkoitetaan uusien datapisteiden rakentamista tunnettujen datapisteiden joukossa. SciPy-kirjasto koostuu alipaketista nimeltä scipy.interpolate, joka koostuuspline-toiminnot ja -luokat, yksiulotteiset ja moniulotteiset (yksi- ja moniulotteiset) interpolointiluokat jne.

Yksimuuttujainen interpolaatio:

Yksimuuttujainen interpolointi on pohjimmiltaan kaaren sovitusalue, jokalöytää käyrän, joka tarjoaa tarkan sovituksen sarjaan kaksiulotteisia datapisteitä. SciPy tarjoaa interp1d toiminto, jota voidaan käyttää yksimuuttujaisen interpolaation tuottamiseen.

ESIMERKKI:

tuo matplotlib.pyplot plt-tiedostona scipy-tuonnin interpolaatista x = np.arange (5, 20) y = np.exp (x / 3.0) f = interpolate.interp1d (x, y) x1 = np.arange (6, 12) y1 = f (x1) # käytä interpolointitoimintoa, jonka palauttaa `interp1d` plt.plot (x, y, 'o', x1, y1, '-') plt.show ()

LÄHTÖ:

Monimuuttujainterpolaatio:

Monimuuttujainterpolointi(tilainterpolointi) on eräänlaineninterpolointitoiminnoista, jotka koostuvat useammasta kuin yhdestä muuttujasta. Seuraava esimerkki osoittaa esimerkin interp2d toiminto.
Interpolointi 2-D-ruudukon kautta käyttämällä interp2d (x, y, z) -toimintoa käyttää periaatteessa x, y, z-taulukoita joidenkin toimintojen arvioimiseksi f: 'z = f (x, y)' ja palauttaa funktion, jonka kutsumenetelmä käyttää spline-interpolointi löytääksesi uusien pisteiden arvon.
ESIMERKKI:

scipy-tuonnista interpoloi tuonti matplotlib.pyplot muodossa plt x = np.arange (0,10) y = np.arange (10,25) x1, y1 = np.meshgrid (x, y) z = np.tan (xx + yy) f = interpoloi.interp2d (x, y, z, laji = 'kuutio') x2 = np. alue (2,8) y2 = np. alue (15,20) z2 = f (xuusi, uusi) plt. juoni (x, z [0,:], 'ro-', x2, z2 [0,:], '-') plt.show ()

LÄHTÖ:

Fourier-muunnosfunktiot:

Fourier-analyysi on menetelmä, joka käsittelee funktion ilmaisemista jaksollisten komponenttien summana ja signaalin palauttamista noista komponenteista. fft toimintoja voidaan käyttää palauttamaantodellisen tai monimutkaisen sekvenssin erillinen Fourier-muunnos.

ESIMERKKI:

scipy.fftpack-tiedostosta tuo fft, ifft x = np.array ([0,1,2,3]) y = fft (x) tulosta (y)

LÄHTÖ: [6. + 0.j -2. + 2.j -2. + 0.j -2.-2.j]

Vastaavasti löydät tämän käänteisen käyttämällä ifft toimi seuraavasti:

ESIMERKKI:

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

LÄHTÖ: [1,5 + 0,j -0,5-0,5j -0,5 + 0,j -0,5 + 0,5j]

Signaalinkäsittelytoiminnot:

Signaalinkäsittely koskeeanalysoida, muokata ja syntetisoida signaaleja, kuten ääni, kuvat jne. SciPy tarjoaa joitain toimintoja, joiden avulla voit suunnitella, suodattaa ja interpoloida yksi- ja kaksiulotteista dataa.

Suodatus:

Suodattamalla signaalin poistat siitä periaatteessa ei-toivotut komponentit. Voit suorittaa järjestetyn suodatuksen käyttämällä tilaussuodatin toiminto. Tämä toiminto suorittaa periaatteessa järjestetyn suodatuksen taulukossa. Tämän toiminnon syntaksi on seuraava:

SYNTAKSI:
order_filter (a, verkkotunnus, sijoitus)

a = N-ulotteinen tuloryhmä

domain = maskiryhmä, jolla on sama määrä ulottuvuuksia kuin a

sijoitus = Ei-negatiivinen luku, joka valitsee elementit luettelosta lajittelun jälkeen (0 on pienin, jota seuraa 1…)

ESIMERKKI:

scipy-tuontisignaalista x = np.arange (35) .reshape (7, 5) domain = np.identity (3) print (x, end = 'nn') print (signal.order_filter (x, domain, 1))

LÄHTÖ:

[[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.]
[viisitoista. 16. 17. 18. 13.]
[kaksikymmentä. 21. 22. 23. 18.]
[25. 26. 27. 28. 23.]
[0. 25. 26. 27. 28.]]

Aaltomuodot:

Scipy.signal-alipaketti koostuu myös useista toiminnoista, joita voidaan käyttää aaltomuotojen luomiseen. Yksi tällainen toiminto on visertää . Tämä toiminto on frekenssillä pyyhkäisevä kosinigeneraattori ja syntaksin muoto on seuraava:

SYNTAKSI:
chirp (t, f0, t1, f1, method = ’lineaarinen’, phi = 0, vertex_zero = True)

missä,

ESIMERKKI:

scipy.signal-tuonti-chirpistä, spektrogrammin tuonti matplotlib.pyplot muodossa plt t = np.linspace (6, 10, 500) w = chirp (t, f0 = 4, f1 = 2, t1 = 5, method = 'lineaarinen') plt.plot (t, w) plt.title ('Linear Chirp') plt.xlabel ('aika sekunteina')) plt.show ()

LÄHTÖ:

Lineaarialgebra:

Lineaarinen algebra käsittelee lineaarisia yhtälöitä ja niiden esityksiä käyttäen vektoritiloja ja matriiseja. SciPy on rakennettuATLAS LAPACK- ja BLAS-kirjastot ja onerittäin nopea ratkaisemaan lineaariseen algebraan liittyviä ongelmia. Kaikkien numpy.linalg-funktioiden lisäksi scipy.linalg tarjoaa myös useita muita lisätoimintoja. Lisäksi, jos numeroa.linalg ei käytetä yhdessäATLAS LAPACK- ja BLAS-tuki, scipy.linalg on nopeampi kuin numpy.linalg.

Matriisin käänteisen etsiminen:

Matemaattisesti matriisin A käänteinenon matriisiBsellainenAB = minämissäMinäon identiteettimatriisi, joka koostuu päädiagonaalin alapuolella olevistaB = A-yksi. SciPyssä tämä käänteinen voidaan saada käyttämällä linalg.inv menetelmä.

mikä on sas-ohjelmointikieli

ESIMERKKI:

tuoda numero np: stä scipy-tuonnista linalg A = np.array ([[1,2], [4,3]]) B = linalg.inv (A) tulosta (B)

LÄHTÖ:

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

Määrittävien tekijöiden löytäminen:

Matriisin kertoimista aritmeettisesti johdettu arvo tunnetaan neliömatriisin determinanttina. SciPy: ssä tämä voidaan tehdä käyttämällä toimintoa jolla on seuraava syntakse:

SYNTAKSI:
det (a, korvaa_a = väärä, tarkista_ lopullinen = tosi)
missä,

a: (M, M) on neliömäinen matriisi

korvaa_a (Bool, valinnainen): Salli ylikirjoittaa tiedot a: ssa

check_finite (bool, valinnainen): Tarkistetaan, koostuuko syöttömatriisi vain äärellisistä luvuista

ESIMERKKI:

tuoda numero np: stä scipy-tuonnista linalg A = np.array ([[1,2], [4,3]]) B = linalg.det (A) tulosta (B)

LÄHTÖ: -5,0

Harvat ominaisarvot:

Ominaisarvot ovat tietty joukko skalaareja, jotka on linkitetty lineaarisiin yhtälöihin. ARPACK tarjoaa, että voit löytää ominaisarvot (ominaisvektorit) melko nopeasti. ARPACKin kaikki toiminnot on pakattukaksi korkean tason rajapintaa, jotka ovat scipy.sparse.linalg.eigs ja scipy.sparse.linalg.eigsh. eigs. Eigs-käyttöliittymän avulla voit löytää todellisten tai monimutkaisten epäsymmetristen neliömatriisien ominaisarvot, kun taas eigsh-rajapinta sisältää rajapintoja reaalisymmetrisille tai monimutkaisille-hermiittisille matriiseille.

kahdeksan funktio ratkaisee yleistetyn ominaisarvon ongelman monimutkaiselle Hermitian tai todelliselle symmetriselle matriisille.

ESIMERKKI:

from scipy.linalg tuonti kahdeksan tuontinumeroa muodossa np A = np.array ([[1, 2, 3, 4], [4, 3, 2, 1], [1, 4, 6, 3], [2, 3, 2, 5]]) a, b = kahdeksan (A) tulosta ('Valitut ominaisarvot:', a) tulosta ('Monimutkainen ndarray:', b)

LÄHTÖ:

Valitut ominaisarvot: [-2.53382695 1.66735639 3.69488657 12.17158399]
Monimutkainen hämärä: [[0,69205614 0,5829305 0,25682823 -0,33954321]
[-0,68277875 0,466838936 0,03700454 -0,5595134]
[0,23275694 -0,29164622 -0,72710245 -0,57627139]
[0.02637572 -0.59644441 0.63560361 -0.48945525]]

Paikkatietorakenteet ja algoritmit:

Paikkatiedot koostuvat periaatteessa objekteista, jotka koostuvat viivoista, pisteistä, pinnoista jne. SciPyn scipy.spatial-paketti voi laskeaVoronoi-kaaviot, triangulaatiot jne. Käyttämällä Qhull-kirjastoa. Se koostuu myös KDTree-toteutuksista lähimmän naapurin pistekyselyihin.

Delaunayn kolmiomittaukset:

Matemaattisesti Delaunayn kolmiomuodot joukon erillisille pisteille tasossa ovat sellaisia, että yhtään pistettä annetussa pistejoukossa ei oleminkä tahansa kolmion ympyrän sisällä.

ESIMERKKI:

tuo matplotlib.pyplot plt-tiedostona scipy.spatial-tuonnista Delaunay-pisteet = np.array ([[0, 1], [1, 1], [1, 0], [0, 0]]) a = Delaunay (pistettä) #Delaunay-objektitulostus (a) print (a.simplices) plt.triplot (points [:, 0], points [:, 1], a.simplices) plt.plot (points [:, 1], points [:, 0], 'o') plt.show ()

LÄHTÖ:

Moniulotteiset kuvankäsittelytoiminnot:

Kuvankäsittely käsittelee periaatteessa kuvan toimintoja tietojen noutamiseksi tai parannetun kuvan saamiseksi alkuperäisestä. Scipy.ndimage-paketti koostuu joukostakuvankäsittely- ja analyysitoiminnot, jotka on suunniteltu toimimaan mielivaltaisen ulottuvuuden taulukoiden kanssa.

Konvoluutio ja korrelaatio:

SciPy tarjoaa useita toimintoja, jotka mahdollistavat kuvien korrelaation ja konvoluution.

  • Toiminto korreloi1d voidaan käyttää laskemaan yksiulotteinen korrelaatio tietyllä akselilla
  • Toiminto korreloivat sallii minkä tahansa taulukon moniulotteisen korrelaation määritetyn ytimen kanssa
  • Toiminto convolve1d voidaan käyttää laskemaan yksiulotteinen konvoluutio tietyllä akselilla
  • Toiminto sekoita sallii minkä tahansa taulukon moniulotteisen konvoluution määritetyllä ytimellä

ESIMERKKI:

tuoda numero np: stä scipy.ndimage-tiedostosta correlate1d correlate1d ([3,5,1,7,2,6,9,4], painot = [1,2])

LÄHTÖ: taulukko ([9, 13, 7, 15, 11, 14, 24, 17])

IO-tiedosto:

Scipy.io-paketti tarjoaa useita toimintoja, jotka auttavat sinua hallitsemaan erimuotoisia tiedostoja, kuten MATLAB-tiedostoja, IDL-tiedostoja, Matrix Market -tiedostoja jne.

Jotta voit käyttää tätä pakettia, sinun on tuotava se seuraavasti:

tuo scipy.io sio-tiedostona

Täydelliset tiedot alipakkauksista ovat virallisessa asiakirjassa Tiedosto IO .

Tämä tuo meidät tämän SciPy-opetusohjelman loppuun. Toivon, että olet ymmärtänyt kaiken selvästi. Varmista, että harjoittelet niin paljon kuin mahdollista .

Onko sinulla kysymys meille? Mainitse se tämän 'SciPy Tutorial' -blogin kommenttiosassa, niin otamme sinuun yhteyttä mahdollisimman pian.

Saadaksesi syvällistä tietoa Pythonista sen eri sovellusten kanssa, voit ilmoittautua livenä 24/7 -tuella ja käyttöikä.