SciPy-handledning: Vad är Python SciPy och hur man använder det?

SciPy är ett Python-bibliotek som används för att lösa vetenskapliga och matematiska problem. NumPy vs SciPy. Basic, Special, Integration, Optimering, etc med exempel.

Matematik behandlar ett stort antal begrepp som är mycket viktiga men samtidigt komplexa och tidskrävande. Dock, tillhandahåller det fullfjädrade SciPy-biblioteket som löser problemet för oss. I den här SciPy-självstudien lär du dig hur du använder detta bibliotek tillsammans med några funktioner och deras exempel.

Innan du går vidare, ta en titt på alla ämnen som diskuteras i den här artikeln:



Så låt oss komma igång. :)

Vad är SciPy?

SciPy är ett Python-bibliotek med öppen källkod som används för att lösa vetenskapliga och matematiska problem. Den är byggd på förlängning och låter användaren manipulera och visualisera data med ett brett spektrum av högnivåkommandon. Som tidigare nämnts bygger SciPy på NumPy och om du importerar SciPy behöver du därför inte importera NumPy.

NumPy vs SciPy

Både NumPy och SciPy är används för begagnad matematisk och numerisk analys. NumPy innehåller arraydata och grundläggande operationer som sortering, indexering, etc medan SciPy består av all numerisk kod. Även om NumPy tillhandahåller ett antal som kan hjälpa till att lösa linjär algebra, Fourier-omvandlingar osv., SciPy är biblioteket som faktiskt innehåller fullständiga versioner av dessa funktioner tillsammans med många andra. Om du gör vetenskaplig analys med Python måste du dock installera både NumPy och SciPy eftersom SciPy bygger på NumPy.

Delpaket i SciPy:

SciPy har ett antal delpaket för olika vetenskapliga beräkningar som visas i följande tabell:

namnBeskrivning
klungaKlusteralgoritmer
konstanterFysiska och matematiska konstanter
fftpackSnabb Fourier Transform-rutiner
integreraIntegrering och vanliga differentiella ekvationslösare
interpoleraInterpolering och utjämning av splines
JagIngång och utgång
linalgLinjär algebra
jag flygerN-dimensionell bildbehandling
odrOrthogonal distansregression
optimeraOptimerings- och rotfyndningsrutiner
signalSignalbehandling
glesGlesa matriser och tillhörande rutiner
rumsligRumsliga datastrukturer och algoritmer
särskildSpecialfunktioner
statistikStatistiska fördelningar och funktioner

Men för en detaljerad beskrivning kan du följa officiell dokumentation .

kasta dubbelt till int java

Dessa paket måste importeras exklusivt innan de används. Till exempel:

från scipy importkluster

Innan vi tittar på var och en av dessa funktioner i detalj, låt oss först titta på de funktioner som är vanliga både i NumPy och SciPy.

Grundläggande funktioner:

Interaktion med NumPy:

SciPy bygger på NumPy och därför kan du själv använda NumPy-funktionerna för att hantera matriser. För att lära dig mer om dessa funktioner kan du helt enkelt använda hjälp (), info () eller källfunktioner ().

hjälp():

För att få information om vilken funktion som helst kan du använda hjälp() fungera. Det finns två sätt på vilka denna funktion kan användas:

  • utan några parametrar
  • med hjälp av parametrar

Här är ett exempel som visar båda ovanstående metoder:

från scipy importklusterhjälp (kluster) #with parameter help () #without parameter

När du kör koden ovan returnerar den första hjälpen () informationen om klunga submodul. Den andra hjälpen () ber användaren att ange namnet på vilken modul, nyckelord som helst som användaren vill söka information om. För att stoppa körningen av den här funktionen, skriv bara 'avsluta' och tryck på enter.

info():

Denna funktion returnerar information om önskat , moduler etc.

scipy.info (kluster)

källa():

Källkoden returneras endast för objekt som är inskrivna . Denna funktion returnerar inte användbar information om metoderna eller objekten är skrivna på något annat språk som C. Men om du vill använda den här funktionen kan du göra det på följande sätt:

scipy.source (kluster)

Specialfunktioner:

SciPy tillhandahåller ett antal specialfunktioner som används i matematisk fysik som elliptisk, bekvämlighetsfunktioner, gamma, beta, etc.För att leta efter alla funktioner kan du använda funktionen help () som beskrivits tidigare.

Exponentiella och trigonometriska funktioner:

SciPys specialfunktionspaket innehåller ett antal funktioner genom vilka du kan hitta exponenter och lösa trigonometriska problem.

Tänk på följande exempel:

EXEMPEL:

från 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)

PRODUKTION:

1000,0
8.0
1.0
0,7071067811865475

Det finns många andra funktioner i SciPys specialfunktioner som du kan prova själv.

Integrationsfunktioner:

SciPy tillhandahåller ett antal funktioner för att lösa integraler. SciPy sträcker sig från vanlig differentialintegrator till att använda trapezformiga regler för att beräkna integraler, och är ett lager av funktioner för att lösa alla typer av integralproblem.

Allmän integration:

SiPy tillhandahåller en funktion som heter fyrhjuling för att beräkna integralen för en funktion som har en variabel. Gränserna kan vara ± & infin(± inf) för att ange oändliga gränser. Syntaxen för quad () -funktionen är som följer:

SYNTAX:

quad (func, a, b, args = (), full_output = 0, epsabs = 1.49e-08, epsrel = 1.49e-08, limit = 50, poäng = Ingen, vikt = Ingen, wvar = Ingen, wopts = Ingen , maxp1 = 50, limlst = 50)

Här integreras funktionen mellan gränserna a och b (kan också vara oändlig).

EXEMPEL:

från scipy import special från scipy import integrera a = lambda x: special.exp10 (x) b = scipy.integrate.quad (a, 0, 1) print (b)

I exemplet ovan utvärderas funktionen 'a' mellan gränserna 0, 1. När den här koden körs ser du följande utdata.

PRODUKTION:

(3.9086503371292665, 4.3394735994897923e-14)

Dubbel integrerad funktion:

SciPy tillhandahåller dblquad som kan användas för att beräkna dubbla integraler. En dubbel integral, som många av oss vet, består av två verkliga variabler. Funktionen dblquad () tar funktionen som ska integreras som sin parameter tillsammans med fyra andra variabler som definierar gränserna och funktionerna dy och dx.

EXEMPEL:

från scipy import integrera a = lambda y, x: x * y ** 2 b = lambda x: 1 c = lambda x: -1 integrera.dblquad (a, 0, 2, b, c)

PRODUKTION:

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

SciPy tillhandahåller olika andra funktioner för att utvärdera trippelintegraler, n-integraler, Romberg-integraler, etc som du kan utforska mer i detalj. För att hitta all information om de önskade funktionerna, använd hjälpfunktionen.

Optimeringsfunktioner:

Scipy.optimize tillhandahåller ett antal vanliga optimeringsalgoritmer som kan ses med hjälp av hjälpfunktionen.

Den består i grunden av följande:

  • Obegränsad och begränsad minimering av flervariata skalära funktioner, dvs. minimera (t.ex. BFGS, Newton Conjugate Gradient, Nelder_mead simplex, etc)
  • Globala optimeringsrutiner (t.ex. differential_evolution, dual_annealing, etc)
  • Minsta kvadrat minimering och kurvanpassning (t.ex. minst_kvadrater, kurvfit, etc)
  • Scalar univariate funktioner minimizers och root finders (t.ex. minimize_scalar och root_scalar)
  • Multivariata ekvationssystemslösare med algoritmer som hybrid Powell, Levenberg-Marquardt.

Rosenbrook-funktion:

Rosenbrook-funktion ( rosen ) är ett testproblem som används för gradientbaserade optimeringsalgoritmer. Det definieras enligt följande i SciPy:

rosen-Scipy tutorial-edurekaEXEMPEL:

importera numpy som np från scipy. optimera import rosen a = 1,2 * np.avstånd (5) rosen (a)

PRODUKTION: 7371.0399999999945

Nelder-Mead:

DeNelder–Mead-metoden är en numerisk metod som ofta används för att hitta min / max för en funktion i ett flerdimensionellt utrymme. I följande exempel används minimeringsmetoden tillsammans med Nelder-Mead-algoritmen.

EXEMPEL:

från scipy import optimera a = [2.4, 1.7, 3.1, 2.9, 0.2] b = optimize.minimize (optimize.rosen, a, method = 'Nelder-Mead') b.x

PRODUKTION: array ([0,96570182, 0,93255069, 0,86939478, 0,75497872, 0,56793357])

Interpolationsfunktioner:

Inom numerisk analys hänvisar interpolering till att konstruera nya datapunkter inom en uppsättning kända datapunkter. SciPy-biblioteket består av ett underpaket med namnet scipy.interpolate som består avsplinefunktioner och klasser, endimensionella och flerdimensionella (univariata och multivariata) interpolationsklasser etc.

Univariat interpolation:

Univariat interpolation är i grunden ett område med kurvpassning vilkethittar kurvan som ger en exakt anpassning till en serie tvådimensionella datapunkter. SciPy tillhandahåller interp1d funktion som kan användas för att producera univariat interpolation.

EXEMPEL:

importera matplotlib.pyplot som plt från scipy import interpolera x = np.avstånd (5, 20) y = np.exp (x / 3.0) f = interpolera.interp1d (x, y) x1 = np.avstånd (6, 12) y1 = f (x1) # använd interpolationsfunktion som returneras av 'interp1d' plt.plot (x, y, 'o', x1, y1, '-') plt.show ()

PRODUKTION:

Multivariat interpolation:

Multivariat interpolation(rumsliginterpolation) är ett slaginterpolationpå funktioner som består av mer än en variabel. Följande exempel visar ett exempel på interp2d fungera.
Interpolering över ett 2-D-rutnät med interp2d (x, y, z) -funktionen använder i princip x, y, z-matriser för att approximera någon funktion f: “z = f (x, y)“ och returnerar en funktion vars anropsmetod använder splineinterpolation för att hitta värdet av nya poäng.
EXEMPEL:

från scipy import interpolera importera matplotlib.pyplot som plt x = np.område (0,10) y = np.område (10,25) x1, y1 = np. nätgrid (x, y) z = np.tan (xx + yy) f = interpolera.interp2d (x, y, z, kind = 'kubisk') x2 = np. avstånd (2,8) y2 = np. avstånd (15,20) z2 = f (xnytt, ny) plt. plot (x, z [0,:], 'ro-', x2, z2 [0,:], '-') plt.show ()

PRODUKTION:

Fourier Transform-funktioner:

Fourier-analys är en metod som handlar om att uttrycka en funktion som en summa av periodiska komponenter och återställa signalen från dessa komponenter. De fft funktioner kan användas för att returneradiskret Fourier-transformation av en verklig eller komplex sekvens.

EXEMPEL:

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

PRODUKTION: [6. + 0.j -2. + 2.j -2. + 0.j -2.-2.j]

På samma sätt kan du hitta det motsatta av detta genom att använda ifft fungerar enligt följande:

EXEMPEL:

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

PRODUKTION: [1.5 + 0.j -0.5-0.5j -0.5 + 0.j -0.5 + 0.5j]

Funktioner för signalbehandling:

Signalbehandling behandlaranalysera, modifiera och syntetisera signaler som ljud, bilder etc. SciPy tillhandahåller några funktioner som du kan designa, filtrera och interpolera endimensionell och tvådimensionell data.

hur man gör en dubbel en int i java

Filtrering:

Genom att filtrera en signal tar du i princip bort oönskade komponenter från den. För att utföra beställd filtrering kan du använda order_filter fungera. Denna funktion utför i princip beställt filtrering på en matris. Syntaxen för denna funktion är som följer:

SYNTAX:
order_filter (a, domän, rang)

a = N-dimensionell inmatningsmatris

domän = maskuppsättning med samma antal dimensioner som `a`

rank = Icke-negativt tal som väljer element från listan efter att den har sorterats (0 är det minsta följt av 1 ...)

EXEMPEL:

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

PRODUKTION:

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

Vågformer:

Underpaketet scipy.signal består också av olika funktioner som kan användas för att generera vågformer. En sådan funktion är kvittra . Denna funktion är en frekvisenssvept cosinusgenerator och syntaxen är som följer:

SYNTAX:
kvittra (t, f0, t1, f1, metod = ’linjär’, phi = 0, vertex_zero = True)

var,

EXEMPEL:

från scipy.signal import chirp, spektrogram import matplotlib.pyplot som plt t = np.linspace (6, 10, 500) w = chirp (t, f0 = 4, f1 = 2, t1 = 5, metod = 'linjär') plt.plot (t, w) plt.title ('Linear Chirp') plt.xlabel ('time in sec)') plt.show ()

PRODUKTION:

Linjär algebra:

Linjär algebra behandlar linjära ekvationer och deras representationer med hjälp av vektorrymden och matriser. SciPy bygger påATLAS LAPACK och BLAS-bibliotek och ärextremt snabbt för att lösa problem relaterade till linjär algebra. Förutom alla funktioner från numpy.linalg, erbjuder scipy.linalg också ett antal andra avancerade funktioner. Om numpy.linalg inte används tillsammans medATLAS LAPACK och BLAS stöd, scipy.linalg är snabbare än numpy.linalg.

Hitta det omvända av en matris:

Matematiskt, det omvända av en matris A.är matrisenBSå attAB = jagvarJagär identitetsmatrisen som består av sådana längs huvuddiagonalen betecknad somB = A-ett. I SciPy kan denna inversa erhållas med hjälp av linalg.inv metod.

EXEMPEL:

importera numpy som np från scipy import linalg A = np.array ([[1,2], [4,3]]) B = linalg.inv (A) print (B)

PRODUKTION:

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

Hitta bestämningsfaktorerna:

Värdet härledd aritmetiskt från koefficienterna för matrisen är känd som determinanten för en kvadratmatris. I SciPy kan detta göras med en funktion det som har följande syntax:

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

a: (M, M) Är en kvadratmatris

overwrite_a (bool, optional): Tillåt överskrivningsdata i en

check_finite (bool, valfritt): För att kontrollera om ingångsmatrisen endast består av ändliga siffror

EXEMPEL:

importera numpy som np från scipy import linalg A = np.array ([[1,2], [4,3]]) B = linalg.det (A) print (B)

PRODUKTION: -5,0

Sparse Eigenvalues:

Eigenvärden är en specifik uppsättning skalar kopplade till linjära ekvationer. ARPACK tillhandahåller att du kan hitta egenvärden (egenvektorer) ganska snabbt. ARPACKs kompletta funktionalitet är förpackad itvå högnivågränssnitt som är scipy.sparse.linalg.eigs och scipy.sparse.linalg.eigsh. eigs. Med eigs-gränssnittet kan du hitta egenvärdena för verkliga eller komplexa icke-symmetriska fyrkantiga matriser medan eigsh-gränssnittet innehåller gränssnitt för real-symmetriska eller komplex-hermitiska matriser.

De lår funktion löser ett generaliserat egenvärde problem för en komplex hermitisk eller verklig symmetrisk matris.

EXEMPEL:

från scipy.linalg import eigh import numpy som np A = np.array ([[1, 2, 3, 4], [4, 3, 2, 1], [1, 4, 6, 3], [2, 3, 2, 5]]) a, b = åtta (A) utskrift ('Valda egenvärden:', a) utskrift ('Komplex ndarray:', b)

PRODUKTION:

Valda egenvärden: [-2.53382695 1.66735639 3.69488657 12.17158399]
Komplex fläck: [[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]]

Rumsliga datastrukturer och algoritmer:

Rumsdata består i grunden av objekt som består av linjer, punkter, ytor etc. Scipy.spatial-paketet med SciPy kan beräknaVoronoi-diagram, trianguleringar etc med hjälp av Qhull-biblioteket. Det består också av KDTree-implementeringar för närmaste punktfrågor.

Delaunay trianguleringar:

Matematiskt är Delaunay-trianguleringar för en uppsättning diskreta punkter i ett plan en triangulering så att ingen punkt i den angivna uppsättningen punkter ärinuti omkretsen av vilken triangel som helst.

EXEMPEL:

importera matplotlib.pyplot som plt från scipy.spatial import Delaunay poäng = np.array ([[0, 1], [1, 1], [1, 0], [0, 0]]) a = Delaunay (poäng) #Delaunay objektutskrift (a) utskrift (a.simplices) plt.triplot (punkter [:, 0], punkter [:, 1], a.simplices) plt.plot (punkter [:, 1], punkter [:, 0], 'o') plt.show ()

PRODUKTION:

Flerdimensionella bildbehandlingsfunktioner:

Bildbehandling behandlar i grunden operationer på en bild för att hämta information eller för att få en förbättrad bild från den ursprungliga. Scipy.ndimage-paketet består av ett antalbildbearbetnings- och analysfunktioner utformade för att fungera med matriser med godtycklig dimensionalitet.

Konvolution och korrelation:

SciPy tillhandahåller ett antal funktioner som möjliggör korrelation och konvolution av bilder.

  • Funktionen korrelera1d kan användas för att beräkna endimensionell korrelation längs en given axel
  • Funktionen korrelat tillåter flerdimensionell korrelation av en given matris med den angivna kärnan
  • Funktionen samla1d kan användas för att beräkna endimensionell faltning längs en given axel
  • Funktionen konvolvera tillåter flerdimensionell sammanslagning av en given matris med den angivna kärnan

EXEMPEL:

importera numpy som np från scipy.ndimage import correlate1d correlate1d ([3,5,1,7,2,6,9,4], vikter = [1,2])

PRODUKTION: array ([9, 13, 7, 15, 11, 14, 24, 17])

IO-fil:

Scipy.io-paketet innehåller ett antal funktioner som hjälper dig att hantera filer i olika format som MATLAB-filer, IDL-filer, Matrix Market-filer etc.

För att kunna använda detta paket måste du importera det enligt följande:

importera scipy.io som sio

För fullständig information om delpaket kan du hänvisa till det officiella dokumentet på Fil IO .

Detta leder oss till slutet av denna SciPy-handledning. Jag hoppas att du har förstått allt klart. Se till att du tränar så mycket som möjligt .

Har du en fråga till oss? Vänligen nämna det i kommentarsektionen i denna 'SciPy Tutorial' -blogg så återkommer vi till dig så snart som möjligt.

För att få fördjupad kunskap om Python tillsammans med dess olika applikationer kan du registrera dig för live med 24/7 support och livstidsåtkomst.