SciPy-vejledning: Hvad er Python SciPy, og hvordan bruges det?



SciPy er et Python-bibliotek, der bruges til at løse videnskabelige og matematiske problemer. NumPy vs SciPy. Grundlæggende, speciel, integration, optimering osv. Med eksempler.

Matematik beskæftiger sig med et stort antal begreber, der er meget vigtige, men på samme tid, komplekse og tidskrævende. Imidlertid, leverer det fuldt udbyggede SciPy-bibliotek, der løser dette problem for os. I denne SciPy-tutorial lærer du, hvordan du bruger dette bibliotek sammen med et par funktioner og deres eksempler.

Inden du går videre, skal du kigge på alle de emner, der diskuteres i denne artikel:





Så lad os komme i gang. :)

Hvad er SciPy?

SciPy er et open source Python-bibliotek, der bruges til at løse videnskabelige og matematiske problemer. Det er bygget på udvidelse og giver brugeren mulighed for at manipulere og visualisere data med en bred vifte af kommandoer på højt niveau. Som tidligere nævnt bygger SciPy på NumPy, og hvis du importerer SciPy, er der ingen grund til at importere NumPy.



NumPy vs SciPy

Både NumPy og SciPy er bruges til brugt matematisk og numerisk analyse. NumPy indeholder matrixdata og grundlæggende operationer såsom sortering, indeksering osv., Mens SciPy består af al den numeriske kode. Selvom NumPy giver et antal der kan hjælpe med at løse lineær algebra, Fourier-transformeringer osv., SciPy er det bibliotek, der faktisk indeholder fuldt udstyrede versioner af disse funktioner sammen med mange andre. Men hvis du laver videnskabelig analyse ved hjælp af Python, skal du installere både NumPy og SciPy, da SciPy bygger på NumPy.

Underpakker i SciPy:

SciPy har et antal underpakker til forskellige videnskabelige beregninger, som er vist i følgende tabel:

factorial ved hjælp af rekursion i c
NavnBeskrivelse
klyngeKlyngealgoritmer
konstanterFysiske og matematiske konstanter
fftpackHurtige Fourier Transform-rutiner
integrereIntegration og almindelige differentialligningsløsere
interpolereInterpolering og udjævning af splines
jegIndgang og udgang
linalgLineær algebra
jeg flyverN-dimensionel billedbehandling
odrOrtogonal afstandsregression
optimereOptimerings- og rodfindingsrutiner
signalSignalbehandling
sparsomSparsomme matricer og tilhørende rutiner
rumligeRumlige datastrukturer og algoritmer
særligSærlige funktioner
statistikStatistiske fordelinger og funktioner

For en detaljeret beskrivelse kan du dog følge officiel dokumentation .



Disse pakker skal udelukkende importeres, inden de bruges. For eksempel:

fra scipy import klynge

Før vi ser nærmere på hver af disse funktioner, skal vi først se på de funktioner, der er almindelige både i NumPy og SciPy.

Grundlæggende funktioner:

Interaktion med NumPy:

SciPy bygger på NumPy, og derfor kan du selv bruge NumPy-funktionerne til at håndtere arrays. Hvis du vil vide mere om disse funktioner, kan du blot bruge hjælp (), info () eller kilde () -funktioner.

Hjælp():

For at få oplysninger om enhver funktion kan du gøre brug af Hjælp() fungere. Der er to måder, hvorpå denne funktion kan bruges:

  • uden parametre
  • ved hjælp af parametre

Her er et eksempel, der viser begge ovenstående metoder:

fra scipy import cluster help (cluster) #with parameter help () #without parameter

Når du udfører ovenstående kode, returnerer den første hjælp () oplysningerne om klynge undermodul. Den anden hjælp () beder brugeren om at indtaste navnet på ethvert modul, nøgleord osv., Som brugeren ønsker at søge information om. For at stoppe udførelsen af ​​denne funktion skal du blot skrive 'quit' og trykke på enter.

info ():

Denne funktion returnerer information om det ønskede , moduler osv.

scipy.info (klynge)

kilde():

Kildekoden returneres kun for objekter, der er skrevet ind . Denne funktion returnerer ikke nyttige oplysninger, hvis metoderne eller objekterne er skrevet på et andet sprog som C. Hvis du vil bruge denne funktion, kan du gøre det som følger:

scipy.source (klynge)

Særlige funktioner:

SciPy giver en række specielle funktioner, der bruges i matematisk fysik som elliptisk, komfortfunktioner, gamma, beta osv.For at se efter alle funktionerne kan du bruge hjælp () -funktionen som beskrevet tidligere.

Eksponentielle og trigonometriske funktioner:

SciPys Special Function-pakke indeholder en række funktioner, hvorigennem du kan finde eksponenter og løse trigonometriske problemer.

Overvej følgende eksempel:

EKSEMPEL:

fra 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

Der er mange andre funktioner til stede i SciPy-specialpakken, som du selv kan prøve.

Integrationsfunktioner:

SciPy giver en række funktioner til løsning af integraler. SciPy, der spænder fra almindelig differentiel integrator til brug af trapezformede regler til beregning af integraler, er et lagerhus med funktioner til løsning af alle typer integralproblemer.

Generel integration:

SiPy giver en navngivet funktion quad at beregne integralen af ​​en funktion, der har en variabel. Grænserne kan være ± & infin(± inf) for at angive uendelige grænser. Syntaksen for quad () -funktionen er som følger:

SYNTAX:

quad (func, a, b, args = (), fuld_output = 0, epsabs = 1.49e-08, epsrel = 1.49e-08, grænse = 50, point = Ingen, vægt = Ingen, wvar = Ingen, wopts = Ingen , maxp1 = 50, limlst = 50)

Her integreres funktionen mellem grænserne a og b (kan også være uendelig).

EKSEMPEL:

fra scipy import special fra scipy import integrer a = lambda x: special.exp10 (x) b = scipy.integrate.quad (a, 0, 1) print (b)

I ovenstående eksempel evalueres funktionen 'a' mellem grænserne 0, 1. Når denne kode udføres, vil du se følgende output.

PRODUKTION:

(3.9086503371292665, 4.3394735994897923e-14)

Dobbelt integreret funktion:

SciPy giver dblquad der kan bruges til at beregne dobbelt integraler. En dobbelt integral, som mange af os ved, består af to reelle variabler. Funktionen dblquad () tager funktionen til at blive integreret som sin parameter sammen med 4 andre variabler, der definerer grænserne og funktionerne D y og dx.

EKSEMPEL:

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

PRODUKTION:

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

SciPy giver forskellige andre funktioner til evaluering af tredobbelte integraler, n integraler, Romberg integraler osv., Som du kan udforske nærmere i detaljer. Brug hjælpefunktionen for at finde alle detaljer om de nødvendige funktioner.

Optimeringsfunktioner:

Scipy.optimize giver et antal almindeligt anvendte optimeringsalgoritmer, som kan ses ved hjælp af hjælpefunktionen.

Det består grundlæggende af følgende:

  • Ubegrænset og begrænset minimering af multivariate skalarfunktioner, dvs. minimere (f.eks. BFGS, Newton Conjugate Gradient, Nelder_mead simplex osv.)
  • Globale optimeringsrutiner (f.eks. Differentiel_evolution, dual_annealing osv.)
  • Mindste kvadraters minimering og kurvetilpasning (f.eks. Mindst_squares, curve_fit osv.)
  • Scalar univariate funktioner minimizers og root finders (f.eks. Minimize_scalar og root_scalar)
  • Multivariate ligningssystemopløsere ved hjælp af algoritmer som hybrid Powell, Levenberg-Marquardt.

Rosenbrook-funktion:

Rosenbrook-funktion ( rosen ) er et testproblem, der bruges til gradientbaserede optimeringsalgoritmer. Det er defineret som følger i SciPy:

rosen-Scipy tutorial-edurekaEKSEMPEL:

importer numpy som np fra scipy. optimer import rosen a = 1,2 * np. række (5) rosen (a)

PRODUKTION: 7371.0399999999945

Nelder-Mead:

DetNelder–Mead-metoden er en numerisk metode, der ofte bruges til at finde min / max for en funktion i et flerdimensionelt rum. I det følgende eksempel anvendes minimeringsmetoden sammen med Nelder-Mead-algoritmen.

hvad er forskellen mellem en abstrakt klasse og en grænseflade?

EKSEMPEL:

fra scipy import optimer a = [2.4, 1.7, 3.1, 2.9, 0.2] b = optimize.minimere (optimize.rosen, a, metode = 'Nelder-Mead') b.x

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

Interpolationsfunktioner:

Inden for numerisk analyse refererer interpolation til konstruktion af nye datapunkter inden for et sæt kendte datapunkter. SciPy-biblioteket består af en underpakke ved navn scipy.interpolate, der består afsplinefunktioner og klasser, endimensionelle og multidimensionale (univariate og multivariate) interpolationsklasser osv.

Univariat interpolation:

Univariat interpolation er dybest set et område med kurvetilpasning, hvilketfinder kurven, der giver en nøjagtig tilpasning til en række todimensionale datapunkter. SciPy giver interp1d funktion, der kan bruges til at producere univariat interpolation.

EKSEMPEL:

importer matplotlib.pyplot som plt fra scipy import interpolere x = np.område (5, 20) y = np.exp (x / 3.0) f = interpolere. interp1d (x, y) x1 = np. række (6, 12) y1 = f (x1) # brug interpolationsfunktion returneret af `interp1d` plt.plot (x, y, 'o', x1, y1, '-') plt.show ()

PRODUKTION:

Multivariat interpolation:

Multivariat interpolation(rumliginterpolation) er en slagsinterpolationpå funktioner, der består af mere end en variabel. Følgende eksempel viser et eksempel på interp2d fungere.
Interpolering over et 2-D-gitter ved hjælp af interp2d (x, y, z) -funktionen bruger grundlæggende x, y, z arrays til at tilnærme en eller anden funktion f: “z = f (x, y)“ og returnerer en funktion, hvis opkaldsmetode bruger spline interpolation for at finde værdien af ​​nye punkter.
EKSEMPEL:

fra scipy import interpolere import matplotlib.pyplot som plt x = np.arange (0,10) y = np.arange (10,25) x1, y1 = np. meshgrid (x, y) z = np.tan (xx + yy) f = interpolere.interp2d (x, y, z, slags = 'kubisk') x2 = np. række (2,8) y2 = np. række (15,20) z2 = f (x ny, ny) plt. plot (x, z [0,:], 'ro-', x2, z2 [0,:], '-') plt.show ()

PRODUKTION:

Fourier Transform-funktioner:

Fourier-analyse er en metode, der beskæftiger sig med at udtrykke en funktion som en sum af periodiske komponenter og gendanne signalet fra disse komponenter. Det fft funktioner kan bruges til at returnerediskret Fourier-transformation af en reel eller kompleks sekvens.

EKSEMPEL:

fra 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å samme måde kan du finde det omvendte ved at bruge ifft fungerer som følger:

EKSEMPEL:

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]

Signalbehandlingsfunktioner:

Signalbehandling behandleranalysere, modificere og syntetisere signaler såsom lyd, billeder osv. SciPy giver nogle funktioner, hvor du kan designe, filtrere og interpolere endimensionelle og todimensionale data.

Filtrering:

Ved at filtrere et signal fjerner du dybest set uønskede komponenter fra det. For at udføre bestilt filtrering kan du gøre brug af ordrefilter fungere. Denne funktion udfører grundlæggende ordnet filtrering på en matrix. Syntaksen for denne funktion er som følger:

SYNTAX:
ordrefilter (a, domæne, rang)

a = N-dimensionelt input array

domæne = maske array med samme antal dimensioner som `a`

rang = Ikke-negativt tal, der vælger elementer fra listen, efter at den er sorteret (0 er det mindste efterfulgt af 1 ...)

EKSEMPEL:

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

Bølgeformer:

Scipy.signal-underpakken består også af forskellige funktioner, der kan bruges til at generere bølgeformer. En sådan funktion er kvidre . Denne funktion er en frekvensbevejet cosinusgenerator og syntaksen er som følger:

SYNTAX:
kvidre (t, f0, t1, f1, metode = ’lineær’, phi = 0, vertex_zero = sand)

hvor,

EKSEMPEL:

fra 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, metode = 'lineær') plt.plot (t, w) plt.title ('Linear Chirp') plt.xlabel ('time in sec)') plt.show ()

PRODUKTION:

Lineær algebra:

Lineær algebra beskæftiger sig med lineære ligninger og deres repræsentationer ved hjælp af vektorrum og matricer. SciPy er bygget påATLAS LAPACK og BLAS biblioteker og erekstremt hurtig til at løse problemer relateret til lineær algebra. Ud over alle funktionerne fra numpy.linalg giver scipy.linalg også en række andre avancerede funktioner. Også, hvis numpy.linalg ikke bruges sammen medATLAS LAPACK og BLAS understøtter, scipy.linalg er hurtigere end numpy.linalg.

Find det inverse af en matrix:

Matematisk det inverse af en matrix Aer matrixenBsådan atAB = Ihvorjeger identitetsmatrixen, der består af dem ned ad hoveddiagonalen betegnet somB = A-en. I SciPy kan denne inverse opnås ved hjælp af linalg.inv metode.

EKSEMPEL:

importer numpy som np fra 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]]

Find determinanterne:

Værdien afledt aritmetisk fra koefficienterne i matrixen er kendt som determinanten for en kvadratmatrix. I SciPy kan dette gøres ved hjælp af en funktion det som har følgende syntaks:

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

a: (M, M) Er en firkantet matrix

flet sortering implementering c ++

overwrite_a (bool, valgfri): Tillad overskrivningsdata i en

check_finite (bool, valgfri): At kontrollere, om inputmatrix kun består af endelige tal

EKSEMPEL:

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

PRODUKTION: -5,0

Sparse Eigenvalues:

Eigenværdier er et specifikt sæt skalarer forbundet med lineære ligninger. ARPACK giver dig mulighed for at finde egenværdier (egenvektorer) ret hurtigt. Den komplette funktionalitet af ARPACK er pakket indenito grænseflader på højt niveau, som er scipy.sparse.linalg.eigs og scipy.sparse.linalg.eigsh. ejs. Eigs-grænsefladen giver dig mulighed for at finde egenværdierne for ægte eller komplekse ikke-symmetriske firkantede matricer, mens eigsh-grænsefladen indeholder grænseflader til ægte-symmetriske eller komplekse-hermitiske matricer.

Det lår funktion løser et generaliseret egenværdiproblem for en kompleks hermitisk eller ægte symmetrisk matrix.

EKSEMPEL:

fra 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 = eigh (A) print ('Valgte egenværdier:', a) print ('Complex ndarray:', b)

PRODUKTION:

Valgte egenværdier: [-2.53382695 1.66735639 3.69488657 12.17158399]
Kompleks 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]]

Rumlige datastrukturer og algoritmer:

Rumlige data består grundlæggende af objekter, der består af linjer, punkter, overflader osv. Scipy.spatial-pakken med SciPy kan beregneVoronoi-diagrammer, trekanter osv. Ved hjælp af Qhull-biblioteket. Det består også af KDTree-implementeringer til nærmeste nabo-punktforespørgsler.

Delaunay trianguleringer:

Matematisk er Delaunay-trekanter for et sæt diskrete punkter i et plan en sådan triangulering, at intet punkt i det givne sæt punkter erinde i omkredsen af ​​en hvilken som helst trekant.

EKSEMPEL:

importer matplotlib.pyplot som plt fra scipy.spatial import Delaunay point = np.array ([[0, 1], [1, 1], [1, 0], [0, 0]]) a = Delaunay (point) #Delaunay objekt print (a) print (a.simplices) plt.triplot (point [:, 0], point [:, 1], a.simplices) plt.plot (point [:, 1], point [:, 0], 'o') plt.show ()

PRODUKTION:

Flerdimensionelle billedbehandlingsfunktioner:

Billedbehandling handler grundlæggende om at udføre operationer på et billede for at hente information eller for at få et forbedret billede fra det originale. Scipy.ndimage-pakken består af et antalbilledbehandlings- og analysefunktioner designet til at arbejde med arrays med vilkårlig dimensionalitet.

Konvolution og korrelation:

SciPy leverer en række funktioner, der muliggør korrelation og konvolution af billeder.

  • Funktionen korrelat1d kan bruges til at beregne en-dimensionel korrelation langs en given akse
  • Funktionen korrelere tillader flerdimensionel korrelation af et vilkårligt array med den angivne kerne
  • Funktionen inddrage1d kan bruges til at beregne en-dimensionel sammenvikling langs en given akse
  • Funktionen samles tillader flerdimensionel sammenblanding af et vilkårligt array med den angivne kerne

EKSEMPEL:

import numpy som np fra scipy.ndimage import correlate1d correlate1d ([3,5,1,7,2,6,9,4], vægte = [1,2])

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

IO-fil:

Scipy.io-pakken indeholder en række funktioner, der hjælper dig med at administrere filer i forskellige formater såsom MATLAB-filer, IDL-filer, Matrix Market-filer osv.

For at gøre brug af denne pakke skal du importere den som følger:

importer scipy.io som sio

For fuldstændig information om underpakning kan du henvise til det officielle dokument på Fil IO .

Dette bringer os til slutningen af ​​denne SciPy-vejledning. Jeg håber, du har forstået alt klart. Sørg for at øve så meget som muligt .

Har du et spørgsmål til os? Nævn det i kommentarfeltet i denne 'SciPy Tutorial' -blog, og vi vender tilbage til dig hurtigst muligt.

For at få dybtgående viden om Python sammen med dens forskellige applikationer kan du tilmelde dig live med 24/7 support og livstidsadgang.