Matematik handlar om ett enormt antal begrepp som är mycket viktiga men samtidigt komplexa och tidskrävande. Python tillhandahåller dock det fullfjädrade SciPy-biblioteket som löser detta problem för oss. I den här SciPy-handledningen kommer du att lära dig hur du använder det här biblioteket tillsammans med några funktioner och deras exempel.
För att gå vidare, ta en titt på alla ämnen som diskuteras i den här artikeln:
- Vad är SciPy?
- NumPy vs SciPy
- Underpaket i SciPy
- Grundläggande funktioner
- Specialfunktioner
- Integrationsfunktioner
- Optimeringsfunktioner
- Fouriertransformationsfunktioner
- Signal. Processing Functions
- Linear Algebra
- Sparse Eigenvalues
- Spatial Data Structures and Algorithms
- Multidimensional Image Processing Functions
- File IO
Så låt oss komma igång. 🙂
SciPy är ett Pythonbibliotek med öppen källkod som används för att lösa vetenskapliga och matematiska problem. Det bygger på NumPy-tillägget och gör det möjligt för användaren att manipulera och visualisera data med ett stort antal kommandon på hög nivå. 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 Pythonbibliotek som används för använd matematisk och numerisk analys. NumPy innehåller array-data och grundläggande operationer som sortering, indexering osv. medan SciPy består av all numerisk kod. Även om NumPy tillhandahåller ett antal funktioner som kan hjälpa till att lösa linjär algebra, Fouriertransformationer osv. är SciPy det bibliotek som faktiskt innehåller fullfjädrade versioner av dessa funktioner tillsammans med många andra. Om du gör vetenskapliga analyser med hjälp av Python måste du dock installera både NumPy och SciPy eftersom SciPy bygger på NumPy.
Underpaket i SciPy:
SciPy har ett antal underpaket för olika vetenskapliga beräkningar som visas i följande tabell:
För en detaljerad beskrivning kan du dock följa den officiella dokumentationen.
Dessa paket måste importeras exklusivt innan de används. Till exempel:
from scipy import cluster
För att titta på var och en av dessa funktioner i detalj ska vi först ta en titt på de funktioner som är gemensamma för både NumPy och SciPy.
Interaktion med NumPy:
SciPy bygger på NumPy och därför kan du använda dig av NumPy-funktioner i sig själv för att hantera matriser. Om du vill veta mer om dessa funktioner kan du helt enkelt använda funktionerna help(), info() eller source().
help():
För att få information om en funktion kan du använda funktionen help(). Det finns två sätt som denna funktion kan användas på:
- utan parametrar
- med parametrar
Här är ett exempel som visar båda ovanstående metoder:
from scipy import cluster
help(cluster) #with parameter
help() #without parameter
När du utför ovanstående kod returnerar den första help() informationen om klusterundermodulen. Den andra help() ber användaren att ange namnet på en modul, ett nyckelord etc. som användaren vill söka information om. För att stoppa utförandet av denna funktion skriver du helt enkelt ”quit” och trycker på enter.
info():
Denna funktion returnerar information om de önskade funktionerna, modulerna etc.
scipy.info(cluster)
source():
Källkoden returneras endast för objekt som är skrivna i Python. Den här funktionen returnerar inte användbar information om metoderna eller objekten är skrivna på något annat språk, t.ex. C. Men om du vill använda dig av den här funktionen kan du göra det på följande sätt:
scipy.source(cluster)
Specialfunktioner:
SciPy tillhandahåller ett antal specialfunktioner som används inom matematisk fysik, t.ex. elliptiska, bekvämlighetsfunktioner, gamma, beta osv. För att leta efter alla funktioner kan du använda funktionen help() som beskrivs tidigare.
Exponential- och trigonometriska funktioner:
SciPys paket Special Function tillhandahåller ett antal funktioner genom vilka du kan hitta exponenter och lösa trigonometriska problem.
Konsultera följande exempel:
EXEMPEL:
from 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)
UTGÅNG:
1000.0
8.0
1.0
0.7071067811865475
Det finns många andra funktioner som finns i SciPys specialfunktionspaket som du kan prova själv.
Integrationsfunktioner:
SciPy tillhandahåller ett antal funktioner för att lösa integraler. SciPy är ett lager av funktioner för att lösa alla typer av integralproblem, allt från vanlig differentiell integrator till att använda trapezoidregler för att beräkna integraler.
Allmän integration:
SiPy tillhandahåller en funktion som heter quad för att beräkna integralen av en funktion som har en variabel. Gränserna kan vara ( ) för att ange oändliga gränser. Syntaxen för funktionen quad() är följande:
SYNTAX:
quad(func, a, b, args=(), full_output=0, epsabs=1.49e-08, epsrel=1.49e-08, limit=50, points=None, weight=None, wvar=None, wopts=None, maxp1=50, limlst=50)
Här kommer funktionen att integreras mellan gränserna a och b (kan också vara oändlig).
EXEMPEL:
from scipy import special
from scipy import integrate
a= lambda x:special.exp10(x)
b = scipy.integrate.quad(a, 0, 1)
print(b)
I exemplet ovan utvärderas funktionen ”a” mellan gränsvärdena 0, 1. När koden exekveras får du följande utdata.
UTGÅNG:
(3,9086503371292665, 4,3394735994897923e-14)
Dubbelintegralfunktion:
SciPy tillhandahåller dblquad som kan användas för att beräkna dubbla integraler. En dubbelintegral består som många av oss vet av två reella variabler. Funktionen dblquad() tar funktionen som ska integreras som parameter tillsammans med fyra andra variabler som definierar gränserna och funktionerna dy och dx.
EXEMPEL:
from scipy import integrate
a = lambda y, x: x*y**2
b = lambda x: 1
c = lambda x: -1
integrate.dblquad(a, 0, 2, b, c)
UTLÄGGNING:
-1.333333333333333335, 1.4802973661668755e-14)
SciPy tillhandahåller olika andra funktioner för att utvärdera trippelintegraler, n-integraler, Romberg-integraler etc. som du kan utforska ytterligare i detalj. För att hitta alla detaljer om de nödvändiga funktionerna kan du använda hjälpfunktionen.
Optimeringsfunktioner:
Scipy.optimize tillhandahåller ett antal vanligt förekommande optimeringsalgoritmer som kan ses med hjälp av hjälpfunktionen.
Den består i princip av följande:
- Obegränsad och begränsad minimering av multivariata skalära funktioner dvs. minimera (t.ex. BFGS, Newton Conjugate Gradient, Nelder_mead simplex, etc)
- Globala optimeringsrutiner (t.ex. Differential_evolution, dual_annealing, etc)
- Minimering av minsta kvadraters värden och kurvanpassning (t.ex. least_squares, curve_fit, etc)
- Skalära univariata funktioner minimerar och hittar rötter (t.ex. minimize_scalar och root_scalar)
- Multivariata ekvationssystemlösare som använder algoritmer som hybrid Powell, Levenberg-Marquardt.
Rosenbrook-funktion:
Rosenbrook-funktionen ( rosen) är ett testproblem som används för gradientbaserade optimeringsalgoritmer. Den definieras på följande sätt i SciPy:
EXEMPEL:
import numpy as np
from scipy.optimize import rosen
a = 1.2 * np.arange(5)
rosen(a)
UTLÄGG: 7371.039999999999945
Nelder-Mead:
Nelder-Mead-metoden är en numerisk metod som ofta används för att hitta min/max för en funktion i ett flerdimensionellt rum. I följande exempel används minimera-metoden tillsammans med Nelder-Mead-algoritmen.
EXEMPEL:
from scipy import optimize
a =
b = optimize.minimize(optimize.rosen, a, method='Nelder-Mead')
b.x
UTPUT: array()
Interpoleringsfunktioner:
Inom området 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 av spline-funktioner och klasser, endimensionella och flerdimensionella (univariata och multivariata) interpolationsklasser etc.
Univariabel interpolation:
Univariell interpolation är i princip ett område för kurvanpassning där man hittar den kurva som ger en exakt passning till en serie av tvådimensionella datapunkter. SciPy tillhandahåller interp1d-funktionen som kan användas för att producera univariat interpolation.
EXEMPEL:
import matplotlib.pyplot as plt
from scipy import interpolate
x = np.arange(5, 20)
y = np.exp(x/3.0)
f = interpolate.interp1d(x, y)x1 = np.arange(6, 12)
y1 = f(x1) # use interpolation function returned by `interp1d`
plt.plot(x, y, 'o', x1, y1, '--')
plt.show()
UTGÅNG:
Multivariat interpolation:
Multivariat interpolation (rumslig interpolation ) är en typ av interpolation på funktioner som består av fler än en variabel. Följande exempel visar ett exempel på
Interpolering över ett 2-dimensionellt rutnät med hjälp av funktionen interp2d(x, y, z) i princip kommer att använda x, y, z-matriser för att approximera någon funktion interp2d-funktionen. f: ”z = f(x, y)” och returnerar en funktion vars anropsmetod använder splineinterpolation för att hitta värdet av nya punkter.
EXEMPEL:
from scipy import interpolate
import matplotlib.pyplot as plt
x = np.arange(0,10)
y = np.arange(10,25)
x1, y1 = np.meshgrid(x, y)
z = np.tan(xx+yy)
f = interpolate.interp2d(x, y, z, kind='cubic')
x2 = np.arange(2,8)
y2 = np.arange(15,20)
z2 = f(xnew, ynew)
plt.plot(x, z, 'ro-', x2, z2, '--')
plt.show()
UTGÅNG:
Fouriertransformationsfunktioner:
Fourieranalys är en metod som handlar om att uttrycka en funktion som en summa av periodiska komponenter och att återskapa signalen från dessa komponenter. Funktionerna fft kan användas för att återge den diskreta Fouriertransformen för en reell eller komplex sekvens.
EXEMPEL:
from scipy.fftpack import fft, ifft
x = np.array()
y = fft(x)
print(y)
UTGÅNG:
På samma sätt kan du hitta inversen av detta genom att använda ifft-funktionen på följande sätt:
EXEMPEL:
rom scipy.fftpack import fft, ifft
x = np.array()
y = ifft(x)
print(y)
UTLÄSNING:
Signalbehandlingsfunktioner:
Signalbehandling handlar om att analysera, modifiera och syntetisera signaler som ljud, bilder osv. SciPy tillhandahåller några funktioner med hjälp av vilka du kan utforma, filtrera och interpolera endimensionella och tvådimensionella data.
Filtrering:
För att filtrera en signal tar du i princip bort oönskade komponenter från den. För att utföra ordnad filtrering kan du använda funktionen order_filter. Denna funktion utför i princip ordnad filtrering på en array. Syntaxen för denna funktion är följande:
SYNTAX:
order_filter(a, domain, rank)
a = N-dimensionell inmatningsmatris
domän = maskmatris som har samma antal dimensioner som `a`
rank = icke-negativt tal som väljer element från listan efter det att den har sorterats (0 är det minsta följt av 1…)
EXEMPEL:
from 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))
OUTPUT:
]
]
Waveforms:
Den scipy.signal-underpaketet består också av olika funktioner som kan användas för att generera vågformer. En sådan funktion är chirp. Den här funktionen är en frekvens-svept cosinusgenerator och syntaxen är följande:
SYNTAX:
chirp(t, f0, t1, f1, method=’linear’, phi=0, vertex_zero=True)
where,
from scipy.signal import chirp, spectrogram
import matplotlib.pyplot as plt
t = np.linspace(6, 10, 500)
w = chirp(t, f0=4, f1=2, t1=5, method='linear')
plt.plot(t, w)
plt.title("Linear Chirp")
plt.xlabel('time in sec)')
plt.show()
UTLÄGG:
Multidimensionella bildbehandlingsfunktioner:
Bildbehandling handlar i grunden om att utföra operationer på en bild för att hämta information eller för att få fram en förbättrad bild från originalbilden. Paketet scipy.ndimage består av ett antal bildbehandlings- och analysfunktioner som är utformade för att arbeta med matriser av godtycklig dimensionalitet.
Konvolution och korrelation:
SciPy tillhandahåller ett antal funktioner som möjliggör korrelation och konvolution av bilder.
- Funktionen correlate1d kan användas för att beräkna endimensionell korrelation längs en given axel
- Funktionen correlate tillåter flerdimensionell korrelation av en given matris med den angivna kärnan
- Funktionen convolve1d kan användas för att beräkna en-dimensionell konvolution längs en given axel
Funktionen convolve möjliggör flerdimensionell konvolution av en given matris med den angivna kärnan
EXEMPEL:
import numpy as np
from scipy.ndimage import correlate1d
correlate1d(, weights=)
OUTPUT: array()
File IO:
Den scipy.io-paketet tillhandahåller ett antal funktioner som hjälper dig att hantera filer i olika format, t.ex. MATLAB-filer, IDL-filer, Matrix Market-filer etc.
För att använda det här paketet måste du importera det på följande sätt:
import scipy.io as sio
För fullständig information om delpaketet kan du läsa det officiella dokumentet om File IO.
Det här är slutet på den här SciPy-handledningen. Jag hoppas att du har förstått allt klart och tydligt. Se till att du övar så mycket som möjligt.
Om du vill läsa fler artiklar om marknadens mest trendiga teknik som artificiell intelligens, DevOps, etisk hackning, kan du se Edurekas officiella webbplats.
Se upp för andra artiklar i den här serien som kommer att förklara olika andra aspekter av Python och datavetenskap.
1. Machine Learning Classifier in Python
2. Python Scikit-Learn Cheat Sheet
3. Verktyg för maskininlärning
4. Python Libraries For Data Science And Machine Learning
5. Chatbot In Python
6. Python Collections
7. Python Modules
8. Python developer Skills
9. Intervjufrågor och svar om OOPs
10. CV för en Pythonutvecklare
11. Utforskande dataanalys i Python
12. Ormspel med Pythons sköldpaddsmodul
13. Pythonutvecklarens lön
14. Huvudkomponentanalys
15. Python vs C++
16. Scrapy Tutorial
17. Webbskrapning med Python
18. Metod för regression med minsta kvadratmetoden
19. Jupyter Notebook Cheat Sheet
20. Grunderna i Python
21. Pythonmönsterprogram
22. Generatorer i Python
23. Python Decorator
24. Python Spyder IDE
25. Mobila tillämpningar med hjälp av Kivy i Python
26. De tio bästa böckerna för att lära sig & öva Python
27. Robotramverk med Python
28. Ormspel i Python med PyGame
29. Django-intervjufrågor och svar
30. Topp 10 Pythonprogram
31. Hashtabeller och Hashmaps i Python
32. Python 3.8
33. Stödvektormaskin
34. Handledning i Python