第六章 numpy.dual模块:linalg、fft、random、连续分布和离散分布
1、线性代数
创建:A = np.mat("0 1 2; 1 0 3; 4 -0 8")
逆矩阵:inverse = np.linalg.inv(A) [A为方阵且可逆]
矩阵相乘:A * inverse
求线性方程组:x = np.linalg.solve(A, b)
点积:np.dot(A, x)
特征值:np.linalg.eigvals(A)
特征值与特征向量:eigenvalues, eigenvectors = np.linalg.eig(A)
Ax=ax:np.dot(A, engenvectors[ : , i] == eigenvalues[i] * eigenvectors[ : , i]
奇异值分解:SVD:u, sigma, V = np.linalg.svd(A, full_matrices=False) [正交+奇异+正交三个矩阵]
sigma对角成矩阵:np.diag(sigma)
广义逆矩阵:[加号逆/减号逆]:pseudoinv = np.linalg.pinv(A) [与原矩阵相乘近似单位矩阵]
行列式:np.linalg.det(A)
2、快速傅立叶变换
信号:x = np.linspace(0, 2*np.pi, 30) wave = np.cos(x)
正变换:transformed = np.fft.fft(wave)
逆变换:np.fft.ifft(transformed)
直流分量移频:shifted = np.fft.fftshift(transformed)
逆移频:np.fft.ifftshift(shifted)
3、随机数
随机数:outcome = np.random.binomial(9, 0.5, size=len(cash))
超几何分布:outcomes = np.random.hypergeometric(25, 1, 3, size=len(points))
正态分布:np.random.normal(size=N)
概率密度:dummy, bins, dummy = plt.hist(normal_values, np.sqrt(N), normed=True, lw=1)
对数正态分布:lognormal_values = np.random.lognormal(size=N)