python的scipy库

本秂侑毒 提交于 2019-12-11 23:13:11


Scipy有很多子模块可以完成不同的操作,如傅里叶变换、插值运算、优化算法和数学统计等

文件输入输出

傅里叶变换

from scipy.fftpack import *
N = 500
f0 = 10
fs = 500
phy = [2*math.pi*f0*t/fs for t in range(N)]	
sig = [math.cos(i) for i in phy]
sig_fft = fft(sig)

线性代数

解线性方程组
>>> from scipy.linalg import *
>>> A = np.array([[1,4,5], [6,4,2], [8,3,5]])
>>> b = np.array([4,6,8])
>>> x = solve(A,b)
>>> x
array([0.625, 0.375, 0.375])
计算特征值和特征向量
>>> evals = eigvals(A)
>>> evals
array([12.55508516+0.j, -4.52605043+0.j,  1.97096527+0.j])
>>> evals, evecs = eig(A)
>>> evecs
array([[ 0.48407924,  0.75702936,  0.05203827],
       [ 0.50633806, -0.41420767, -0.77485696],
       [ 0.71364491, -0.50531035,  0.62999104]])

特殊函数

在scipy.special中,有一些常用的函数,如

  • 贝塞尔函数,比如scipy.special.jn() (第n个整型顺序的贝塞尔函数)
  • 椭圆函数 (scipy.special.ellipj() Jacobian椭圆函数, …)
  • Gamma 函数: scipy.special.gamma(), 也要注意 scipy.special.gammaln() 将给出更高准确数值的 Gamma的log。
  • Erf, 高斯曲线的面积:scipy.special.erf()

最优化问题

from scipy import optimize
def f(x):
    return 2*x**3 + (x-4)**2 + x**4
fig,ax = plt.subplots()
x = np.linspace(-3,3,200)
ax.plot(x,f(x))
y_min = optimize.fmin_bfgs(f, -2)
array([0.82600516])

概率统计

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
bins = np.arange(-10,10,0.5)
b = stats.norm.pdf(bins)  
plt.figure()
plt.plot(bins, b)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!