SciPy高级数学计算库

it2024-10-11  35

线性代数运算

import numpy as np from scipy import linalg arr = np.array([[1, 9, 2],[4, 8, 3],[5, 7, 6]]) #计算行列式 print(linalg.det(arr)) #逆矩阵 print(linalg.inv(arr)) #奇异值分解 print(linalg.svd(arr))

快速傅里叶变换

import scipy import scipy.fftpack import pylab from scipy import pi #对输入信号采样 t = scipy.linspace(0,120,4000) acc = lambda t: 10*scipy.sin(2*pi*2.0*t) + 5*scipy.sin(2*pi*8.0*t) + 2*scipy.random.random(len(t)) signal = acc(t) FFT = abs(scipy.fft(signal)) freqs = scipy.fftpack.fftfreq(signal.size, t[1]-t[0]) pylab.subplot(211) pylab.plot(t, signal) pylab.subplot(212) pylab.plot(freqs,20*scipy.log10(FFT),'x') pylab.show()

优化和拟合

import numpy as np from scipy import optimize import pylab as plt def f(x): return x**2 + 20 * np.sin(x) x = np.arange(-20, 20, 0.1) plt.plot(x, f(x)) plt.show() #查看局部最小值 xmin_local = optimize.fminbound(f, 0, 10) print(xmin_local) #全局最小值,使用brute暴力搜索 grid = (-2000, 2000, 0.1) xmin_global = optimize.brute(f, (grid,)) print(xmin_global)

统计和随机数

import numpy as np from scipy import stats import matplotlib.pyplot as plt #模拟正态分布 a = np.random.normal(size=1000) bins = np.arange(-5, 5) histogram = np.histogram(a, bins=bins, normed=True)[0] bins = 0.5*(bins[1:] + bins[:-1]) b = stats.norm.pdf(bins) plt.plot(bins, histogram) plt.plot(bins, b) plt.show() #期望和标准差 loc, std = stats.norm.fit(a)

 

最新回复(0)