fromscipyimportstatsdata=[1,2,3,4,5,6,7,8,9]# Meanmean=stats.tmean(data)# Medianmedian=stats.tmedian(data)# Modemode=stats.mode(data)# Standard deviationstd_dev=stats.tstd(data)
Probability Distributions
# Normal distributionrv=stats.norm(loc=0,scale=1)pdf=rv.pdf(0)# Probability density functioncdf=rv.cdf(0)# Cumulative distribution functionsample=rv.rvs(size=10)# Random samples
Linear Algebra (scipy.linalg)
fromscipyimportlinalg# Create a matrixA=np.array([[1,2],[3,4]])# Compute the determinantdet=linalg.det(A)# Compute the inverseinv=linalg.inv(A)# Solve a linear system of equationsb=np.array([1,2])x=linalg.solve(A,b)
Optimization (scipy.optimize)
Minimization
fromscipyimportoptimize# Define a functiondeff(x):returnx**2+5*np.sin(x)# Find the minimumresult=optimize.minimize(f,x0=0)min_x=result.xmin_f=result.fun
Root Finding
# Define a functiondeff(x):returnx**2-5# Find the rootroot=optimize.root(f,x0=2)root_x=root.x
Integration (scipy.integrate)
fromscipyimportintegrate# Define a functiondeff(x):returnx**2# Compute the definite integralresult,error=integrate.quad(f,0,1)# Double integraldeff(x,y):returnx*yresult,error=integrate.dblquad(f,0,1,lambdax:0,lambdax:1)
Signal Processing (scipy.signal)
fromscipyimportsignal# Create a signalt=np.linspace(0,1,500,endpoint=False)x=np.cos(2*np.pi*7*t)+signal.square(2*np.pi*2*t)# Compute the spectrogramfrequencies,times,spectrogram=signal.spectrogram(x)
Fast Fourier Transform (scipy.fftpack)
fromscipyimportfftpack# Create a signalx=np.linspace(0,10,100)y=np.sin(x)# Compute the FFTyf=fftpack.fft(y)# Compute the frequenciesxf=fftpack.fftfreq(len(x),x[1]-x[0])
Example
Complete Example
importnumpyasnpimportscipyasspfromscipyimportstats,linalg,optimize,integrate,signal,fftpackimportmatplotlib.pyplotasplt# Statisticsdata=[1,2,3,4,5,6,7,8,9]mean=stats.tmean(data)std_dev=stats.tstd(data)print(f"Mean: {mean}, Std Dev: {std_dev}")# Linear AlgebraA=np.array([[1,2],[3,4]])det=linalg.det(A)inv=linalg.inv(A)print(f"Determinant: {det}, Inverse:\n{inv}")# Optimizationdeff(x):returnx**2+5*np.sin(x)result=optimize.minimize(f,x0=0)print(f"Minimum at x: {result.x}, f(x): {result.fun}")# Integrationdeff(x):returnx**2result,error=integrate.quad(f,0,1)print(f"Integral result: {result}, Error: {error}")# Signal Processingt=np.linspace(0,1,500,endpoint=False)x=np.cos(2*np.pi*7*t)+signal.square(2*np.pi*2*t)frequencies,times,spectrogram=signal.spectrogram(x)plt.pcolormesh(times,frequencies,spectrogram)plt.ylabel('Frequency [Hz]')plt.xlabel('Time [sec]')plt.show()# Fast Fourier Transformx=np.linspace(0,10,100)y=np.sin(x)yf=fftpack.fft(y)xf=fftpack.fftfreq(len(x),x[1]-x[0])plt.plot(xf,np.abs(yf))plt.title('FFT')plt.show()