线性代数运算
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)