SciPy Tutorial: Hva er Python SciPy og hvordan bruker jeg det?



SciPy er et Python-bibliotek som brukes til å løse vitenskapelige og matematiske problemer. NumPy vs SciPy. Grunnleggende, spesielle, integrering, optimalisering, etc med eksempler.

Matematikk tar for seg et stort antall begreper som er veldig viktige, men samtidig, komplekse og tidkrevende. Men, gir det fullverdige SciPy-biblioteket som løser dette problemet for oss. I denne SciPy-opplæringen lærer du hvordan du kan bruke dette biblioteket sammen med noen få funksjoner og deres eksempler.

Før du går videre, ta en titt på alle temaene som er diskutert i denne artikkelen:





Så la oss komme i gang. :)

Hva er SciPy?

SciPy er et åpen kildekode Python-bibliotek som brukes til å løse vitenskapelige og matematiske problemer. Den er bygget på utvidelse og lar brukeren manipulere og visualisere data med et bredt spekter av kommandoer på høyt nivå. Som nevnt tidligere bygger SciPy på NumPy, og hvis du importerer SciPy, er det ikke nødvendig å importere NumPy.



NumPy vs SciPy

Både NumPy og SciPy er brukt til brukt matematisk og numerisk analyse. NumPy inneholder matrisedata og grunnleggende operasjoner som sortering, indeksering osv., Mens SciPy består av all den numeriske koden. Selv om NumPy gir en rekke som kan bidra til å løse lineær algebra, Fourier-transformasjoner osv., SciPy er biblioteket som faktisk inneholder fullverdige versjoner av disse funksjonene sammen med mange andre. Imidlertid, hvis du gjør vitenskapelig analyse med Python, må du installere både NumPy og SciPy siden SciPy bygger på NumPy.

Delpakker i SciPy:

SciPy har en rekke underpakker for forskjellige vitenskapelige beregninger som er vist i følgende tabell:

NavnBeskrivelse
klyngeKlyngealgoritmer
konstanterFysiske og matematiske konstanter
fftpackRaske Fourier Transform-rutiner
integrereIntegrering og vanlige differensialløsere
interpolereInterpolering og utjevning av splines
JegInngang og utgang
linalgLineær algebra
Jeg flyrN-dimensjonal bildebehandling
odrOrtogonal avstandsregresjon
optimalisereOptimaliserings- og rotfunnrutiner
signalSignal Prosessering
sparsomSparsomme matriser og tilhørende rutiner
romligRomlige datastrukturer og algoritmer
spesiellSpesielle funksjoner
statistikkStatistiske fordelinger og funksjoner

For en detaljert beskrivelse kan du imidlertid følge offisiell dokumentasjon .



Disse pakkene må importeres eksklusivt før du bruker dem. For eksempel:

fra skumle importklynger

Før vi ser på hver av disse funksjonene i detalj, la oss først se på funksjonene som er vanlige både i NumPy og SciPy.

Grunnleggende funksjoner:

Interaksjon med NumPy:

SciPy bygger på NumPy, og derfor kan du bruke NumPy-funksjonene selv til å håndtere matriser. For å vite grundig om disse funksjonene, kan du bare bruke hjelp (), info () eller kilde () funksjoner.

hjelp():

For å få informasjon om en hvilken som helst funksjon, kan du bruke hjelp() funksjon. Det er to måter denne funksjonen kan brukes på:

  • uten parametere
  • ved hjelp av parametere

Her er et eksempel som viser begge metodene ovenfor:

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

Når du utfører koden ovenfor, returnerer den første hjelpen () informasjonen om klynge submodul. Den andre hjelpen () ber brukeren om å skrive inn navnet på en hvilken som helst modul, nøkkelord osv. Som brukeren ønsker å søke informasjon om. For å stoppe utførelsen av denne funksjonen, skriv 'quit' og trykk enter.

info ():

Denne funksjonen returnerer informasjon om ønsket , moduler osv.

scipy.info (klynge)

kilde():

Kildekoden returneres bare for gjenstander skrevet inn . Denne funksjonen returnerer ikke nyttig informasjon i tilfelle metodene eller objektene er skrevet på noe annet språk som C. Hvis du vil bruke denne funksjonen, kan du gjøre det som følger:

scipy.source (klynge)

Spesielle funksjoner:

SciPy gir en rekke spesialfunksjoner som brukes i matematisk fysikk som elliptisk, bekvemmelighetsfunksjoner, gamma, beta, etc.For å se etter alle funksjonene kan du bruke hjelp () -funksjonen som beskrevet tidligere.

Eksponensielle og trigonometriske funksjoner:

SciPys Special Function-pakke inneholder en rekke funksjoner der du kan finne eksponenter og løse trigonometriske problemer.

Tenk på 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)

PRODUKSJON:

1000,0
8.0
1.0
0,7071067811865475

Det er mange andre funksjoner tilstede i spesialfunksjonspakken til SciPy som du kan prøve selv.

Integrasjonsfunksjoner:

SciPy tilbyr en rekke funksjoner for å løse integraler. SciPy er alt fra vanlig differensialintegrator til bruk av trapesformede regler for å beregne integraler, og er et lagerhus med funksjoner for å løse alle typer integralproblemer.

Generell integrasjon:

SiPy gir en funksjon som heter quad å beregne integralen til en funksjon som har en variabel. Grensene kan være ± & infin(± inf) for å indikere uendelige grenser. Syntaksen til quad () -funksjonen er som følger:

SYNTAX:

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

Her vil funksjonen integreres mellom grensene a og b (kan også være uendelig).

EKSEMPEL:

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

I eksemplet ovenfor blir funksjonen ‘a’ evaluert mellom grensene 0, 1. Når denne koden utføres, vil du se følgende utdata.

PRODUKSJON:

(3.9086503371292665, 4.3394735994897923e-14)

Dobbel integrert funksjon:

SciPy gir dblquad som kan brukes til å beregne doble integraler. En dobbel integral, som mange av oss vet, består av to reelle variabler. Dblquad () -funksjonen tar funksjonen som skal integreres som sin parameter sammen med 4 andre variabler som definerer grensene og funksjonene dy og dx.

EKSEMPEL:

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

PRODUKSJON:

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

SciPy tilbyr forskjellige andre funksjoner for å evaluere trippel integraler, n integraler, Romberg integraler, etc som du kan utforske nærmere i detalj. For å finne alle detaljer om de nødvendige funksjonene, bruk hjelpefunksjonen.

Optimaliseringsfunksjoner:

Scipy.optimize gir en rekke ofte brukte optimaliseringsalgoritmer som kan sees ved hjelp av hjelpefunksjonen.

Det består i utgangspunktet av følgende:

  • Ubegrenset og begrenset minimering av multivariate skalarfunksjoner, dvs. minimere (f.eks. BFGS, Newton Conjugate Gradient, Nelder_mead simplex, etc)
  • Globale optimaliseringsrutiner (f.eks. Differensialevolusjon, dobbeltannealing osv.)
  • Minimering av minste kvadrater og tilpassing av kurven (f.eks. Minste_kvadrater, kurve_tilpasning osv.)
  • Skalar univariate funksjoner minimizers og root finders (f.eks. Minimize_scalar og root_scalar)
  • Multivariate ligningssystemløsere ved hjelp av algoritmer som hybrid Powell, Levenberg-Marquardt.

Rosenbrook-funksjon:

Rosenbrook-funksjon ( rosen ) er et testproblem som brukes for gradientbaserte optimaliseringsalgoritmer. Det er definert som følger i SciPy:

rosen-Scipy tutorial-edurekaEKSEMPEL:

importer numpy som np fra scipy. optimaliser import rosen a = 1,2 * np. rekkevidde (5) rosen (a)

PRODUKSJON: 7371.0399999999945

Nelder-Mead:

DeNelder–Mead-metoden er en numerisk metode som ofte brukes til å finne min / max for en funksjon i et flerdimensjonalt rom. I det følgende eksemplet brukes minimeringsmetoden sammen med Nelder-Mead-algoritmen.

EKSEMPEL:

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

PRODUKSJON: matrise ([0,96570182, 0,93255069, 0,86939478, 0,75497872, 0,56793357])

Interpolasjonsfunksjoner:

Innen numerisk analyse refererer interpolasjon til å konstruere nye datapunkter innenfor et sett med kjente datapunkter. SciPy-biblioteket består av en underpakke som heter scipy.interpolate som består avspline funksjoner og klasser, endimensjonale og flerdimensjonale (univariate og multivariate) interpolasjonsklasser, etc.

Univariat interpolasjon:

Univariat interpolasjon er i utgangspunktet et område med kurvetilpasning somfinner kurven som gir en nøyaktig tilpasning til en serie med todimensjonale datapunkter. SciPy gir interp1d funksjon som kan brukes til å produsere univariat interpolasjon.

EKSEMPEL:

importer matplotlib.pyplot som plt fra scipy import interpolere x = np.arange (5, 20) y = np.exp (x / 3.0) f = interpolate.interp1d (x, y) x1 = np.arange (6, 12) y1 = f (x1) # bruk interpolasjonsfunksjon returnert av `interp1d` plt.plot (x, y, 'o', x1, y1, '-') plt.show ()

PRODUKSJON:

Multivariat interpolasjon:

Multivariat interpolasjon(romliginterpolasjon) er en slagsinterpolasjonpå funksjoner som består av mer enn én variabel. Følgende eksempel viser et eksempel på interp2d funksjon.
Interpolering over et 2-D-rutenett ved hjelp av interp2d (x, y, z) -funksjonen vil i utgangspunktet bruke x, y, z arrays for å tilnærme noen funksjoner f: “z = f (x, y)“ og returnerer en funksjon hvis anropsmetode bruker spline interpolasjon for å finne verdien av nye poeng.
EKSEMPEL:

fra scipy import interpolere importere 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, type = 'kubikk') x2 = np. avstand (2,8) y2 = np. avstand (15,20) z2 = f (x ny, ny) plt. plot (x, z [0,:], 'ro-', x2, z2 [0,:], '-') plt.show ()

PRODUKSJON:

Fourier Transform Funksjoner:

Fourier-analyse er en metode som omhandler å uttrykke en funksjon som en sum av periodiske komponenter og gjenopprette signalet fra disse komponentene. De fft funksjoner kan brukes til å returnerediskret Fourier-transformasjon av en reell eller kompleks sekvens.

EKSEMPEL:

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

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

På samme måte kan du finne det motsatte av dette ved å bruke ifft fungerer som følger:

EKSEMPEL:

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

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

Funksjoner for signalbehandling:

Signalbehandling behandleranalysere, modifisere og syntetisere signaler som lyd, bilder osv. SciPy gir noen funksjoner der du kan designe, filtrere og interpolere endimensjonale og todimensjonale data.

Filtrering:

Ved å filtrere et signal, fjerner du i utgangspunktet uønskede komponenter fra det. For å utføre bestilt filtrering, kan du bruke ordrefilter funksjon. Denne funksjonen utfører i utgangspunktet bestilt filtrering på en matrise. Syntaksen til denne funksjonen er som følger:

SYNTAX:
order_filter (a, domene, rang)

a = N-dimensjonalt inngangssett

domene = maskeoppstilling som har samme antall dimensjoner som `a`

rang = Ikke-negativt tall som velger elementer fra listen etter at den er sortert (0 er det minste etterfulgt av 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))

PRODUKSJON:

[[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.]
[tjue. 21. 22. 23. 18.]
[25. 26. 27. 28. 23.]
[0. 25. 26. 27. 28.]]

Bølgeformer:

Scipy.signal-delpakken består også av forskjellige funksjoner som kan brukes til å generere bølgeformer. En slik funksjon er kvitre . Denne funksjonen er en frekvens-feid cosinusgenerator og syntaksen er som følger:

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

hvor,

EKSEMPEL:

fra scipy.signal import chirp, spectrogram 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 ()

PRODUKSJON:

Lineær algebra:

Lineær algebra omhandler lineære ligninger og deres representasjoner ved hjelp av vektorrom og matriser. SciPy er bygget påATLAS LAPACK og BLAS biblioteker og erekstremt rask i å løse problemer knyttet til lineær algebra. I tillegg til alle funksjonene fra numpy.linalg, gir scipy.linalg også en rekke andre avanserte funksjoner. Også, hvis numpy.linalg ikke brukes sammen medATLAS LAPACK og BLAS-støtte, scipy.linalg er raskere enn numpy.linalg.

Finne det motsatte av en matrise:

Matematisk, det omvendte av en matrise A.er matrisenBslik atAB = jeghvorJeger identitetsmatrisen som består av de nedover hoveddiagonalen betegnet somB = A-en. I SciPy kan denne inverse fås ved hjelp av 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)

PRODUKSJON:

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

Finne determinantene:

Verdien avledet aritmetisk fra koeffisientene til matrisen er kjent som determinanten til en kvadratmatrise. I SciPy kan dette gjøres ved hjelp av en funksjon de som har følgende syntaks:

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

a: (M, M) Er en kvadratmatrise

overwrite_a (bool, valgfritt): Tillat overskriving av data i en

check_finite (bool, valgfritt): For å sjekke om inngangsmatrisen bare består av endelige tall

EKSEMPEL:

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

PRODUKSJON: -5,0

Sparse Eigenvalues:

Eigenverdier er et spesifikt sett med skalarer knyttet til lineære ligninger. ARPACK gir deg det som lar deg finne egenverdier (egenvektorer) ganske raskt. Den komplette funksjonaliteten til ARPACK er pakket ito grensesnitt på høyt nivå som er scipy.sparse.linalg.eigs og scipy.sparse.linalg.eigsh. eigs. Eigs-grensesnittet lar deg finne egenverdiene til ekte eller komplekse ikke-symmetriske firkantmatriser, mens eigsh-grensesnittet inneholder grensesnitt for ekte-symmetriske eller komplekse-hermitiske matriser.

De åre funksjon løser et generalisert egenverdiproblem for en kompleks hermitisk eller ekte symmetrisk matrise.

EKSEMPEL:

fra scipy.linalg import og 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 ('Selected eigenvalues:', a) print ('Complex ndarray:', b)

PRODUKSJON:

Valgte egenverdier: [-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]]

Romlige datastrukturer og algoritmer:

Romlige data består i utgangspunktet av objekter som består av linjer, punkter, overflater osv. Scipy.spatial-pakken med SciPy kan beregneVoronoi-diagrammer, trianguleringer osv. Ved bruk av Qhull-biblioteket. Den består også av KDTree-implementeringer for nærmeste nabo-punktforespørsler.

Delaunay trianguleringer:

Matematisk er Delaunay-trianguleringer for et sett med diskrete punkter i et plan en triangulering slik at ingen poeng i det gitte settet med punkter erinne i sirkelen til en hvilken som helst trekant.

EKSEMPEL:

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

PRODUKSJON:

Flerdimensjonale bildebehandlingsfunksjoner:

Bildebehandling handler i utgangspunktet om å utføre operasjoner på et bilde for å hente informasjon eller for å få et forbedret bilde fra det originale. Scipy.ndimage-pakken består av et antallbildebehandlings- og analysefunksjoner designet for å fungere med matriser med vilkårlig dimensjonalitet.

Konvolusjon og korrelasjon:

SciPy tilbyr en rekke funksjoner som tillater korrelasjon og konvolusjon av bilder.

  • Funksjonen korrelere1d kan brukes til å beregne endimensjonell korrelasjon langs en gitt akse
  • Funksjonen korrelere tillater flerdimensjonal korrelasjon av en gitt matrise med den angitte kjernen
  • Funksjonen convolve1d kan brukes til å beregne en-dimensjonal konvolusjon langs en gitt akse
  • Funksjonen trekke sammen tillater flerdimensjonal konvolusjon av en gitt matrise med den angitte kjernen

EKSEMPEL:

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

PRODUKSJON: matrise ([9, 13, 7, 15, 11, 14, 24, 17])

IO-fil:

Scipy.io-pakken inneholder en rekke funksjoner som hjelper deg med å administrere filer i forskjellige formater, for eksempel MATLAB-filer, IDL-filer, Matrix Market-filer osv.

For å gjøre bruk av denne pakken, må du importere den som følger:

importer scipy.io som sio

For fullstendig informasjon om underpakning, kan du se det offisielle dokumentet på Fil IO .

hva er abstraksjon i java med eksempel

Dette fører oss til slutten av denne SciPy-opplæringen. Jeg håper du har forstått alt tydelig. Sørg for at du trener så mye som mulig .

Har du spørsmål til oss? Vennligst nevn det i kommentarfeltet i denne 'SciPy Tutorial' -bloggen, så kommer vi tilbake til deg så snart som mulig.

For å få grundig kunnskap om Python sammen med de forskjellige applikasjonene, kan du registrere deg for live med 24/7 support og levetidstilgang.