scipy-note


以下子库需要显示的import
例: import scipy.fftpack 

scipy.cluster       矢量量化 / K-均值  
scipy.constants     物理和数学常数  
     import scipy.constants as C
     C.c # 光速c

scipy.fftpack       傅里叶变换  Numpy也有一个FFT实现(numpy.fft)。然而,通常scipy的应该优先使用,因为它使用了更有效率的底层实现。 
     scipy.fftpack.fftfreq()函数将生成取样频率
     scipy.fftpack.fft()将计算快速傅里叶变换
     scipy.fftpack.ifft
scipy.integrate     积分程序  
     scipy.integrate.quad()  最通用的积分程序,用于解析积分
         from scipy.integrate import quad
         res, err = quad(np.sin, 0, np.pi/2)  #(用于计算y值的函数,x的积分下限,x的积分上限)
     scipy.integrate.trapz()  梯形法求积分, 用于数值积分,即可用于序列值的积分 (相邻的两个y和对应的x所围的梯形)
     scipy.integrate.dblquad() 二重定积分
     scipy.integrate.tplquad() 三重定积分
     scipy.integrate.odeint() 可解常微分方程组
     
scipy.interpolate   插值
      from scipy import interpolate   类会构建线性插值函数
      interpolate.interp1d(x,y,kind="linear") # scipy.interpolate.interp1d 是一个类,相当于对序列在已有范围内重取样
                           x,y 是已知的数据点,x为递增序列
                           kind 为插值类型,str/int
                                  "zero","nearest" 0阶B样条曲线, 即阶梯插值
                                  "slinear","linear" 1阶B样条曲线, 即线性插值
                                  "quadratic","cubic" 2阶B样条曲线,3阶B样条曲线; 更高阶的曲线可直接用整数值指定
                       f = interpolate.interp1d(x_old,y_old,kind="linear")
                       y_new = f(x_new)
      interpolate.UnivariateSpline(x,y,w=None,bbox[None,None],k=3,s=None)   #是一个类, 支持插值,外推,拟合
                           x,y 是已知的数据点,x为递增序列
                           w 为每个数据点指定的权重值
                           k 为样条曲线的阶数
                           s 为平滑参数 s>0时,样条曲线并不一定通过各个数据点; s=0时则会通过, 通过控制s的值可以达到对离散点进行拟合的效果
                       f = interpolate.UnivariateSpline(x_old,y_old,k=3,s=0)
                       y_new = f(x_new)
      interpolate.interp2d(x,y,kind="linear") # 2维插值
      interpolate.pchip(x,y)                  # 单调三次插值  
                           可保证插值后的曲线上的所有最值点都出现在数据点上
                       f = interpolate.pchip(x_old,y_old)
                       y_new = f(x_new)
      
scipy.io            数据输入输出  
    from scipy import io as spio
    spio.savemat('file.mat', {'a': a})  导入和保存matlab文件
    spio.loadmat('file.mat', struct_as_record=True)
    from scipy import misc
    misc.imread('scikit.png')
scipy.linalg        线性代数程序  
    scipy.linalg.det()函数计算方阵的行列式
    scipy.linalg.inv()`函数计算方阵的逆
scipy.ndimage       n维图像包 
    ndimage.shift(lena, (50, 50))
    ndimage.rotate(lena, 30)
    ndimage.zoom(lena, 2)
    scipy.ndimage.filters

scipy.odr           正交距离回归  
scipy.optimize      优化  提供了函数最小值(标量或多维)、曲线拟合和寻找等式的根的有用算法。
    
    scipy.optimize.fmin() 函数最小值 另外还有其它算法: fmin_powell,fmin_cg,fmin_bfgs
    optimize.fmin_bfgs(f, 0)  BFGS算法,找到这个函数局部最小值
    grid = (-10, 10, 0.1)
    optimize.brute(f, (grid,))  找到全局最小点,但是会耗费资源
    optimize.fminbound(f, 0, 10) 范围内的最小值
    from scipy.optimize import leastsq                                             最小二乘法拟合
    scipy.optimize.leastsq(func, x0, args=())  最小二乘法拟合   注:如果初值x0和真实值差别很大则最终结果可能不能收敛,即会得到错误的结果
                                              func 是我们自己定义的一个计算误差的函数,此函数返回值为数组  
                                              x0  是计算的初始参数值,list 
                                              args 为func的其他参数
    scipy.optimize.curve_fit(func, x数据,y数据,初始参数值)                            曲线拟合
    scipy.optimize.fsolve(func,x0)     对非线性方程组求解                             方程组求解
    
scipy.signal        信号处理  
    scipy.signal.detrend()   移除信号的线性趋势
    scipy.signal.resample()  使用FFT重采样n个点
    scipy.signal.hamming(), scipy.signal.bartlett(), scipy.signal.blackman()…  窗函数
    scipy.signal.medfilt()   中值滤波
    scipy.signal.wiener()    维纳滤波
scipy.sparse        稀疏矩阵 (很多元素都为0的大型矩阵)
scipy.spatial       空间数据结构和算法  
scipy.special       任何特殊数学函数(包含基本的数学函数,特殊数学函数和numpy中出现的所有函数)
    scipy.special.jn() 整数n阶贝塞尔函数
    scipy.special.ellipj() 雅可比椭圆函数
    scipy.special.gamma() 伽马函数
    scipy.special.gammaln 这个函数给出对数坐标的伽马函数,因此有更高的数值精度。
    scipy.special.log1p() 即计算log(1+x) 由于浮点数的精度原因,直接计算如log(1+1e-20)这样的值时会出现问题

scipy.stats         统计 
    loc, std = stats.norm.fit(a)  拟合正态过程过程数据
    stats.scoreatpercentile(a, 50)  50百分位点,即找到一个数据,有50%的数据小于此数据
    stats.scoreatpercentile(a, 90)  90%的数据小于此数据
    stats.ttest_ind(a, b)   a,b为两个数组, 输出结果由以下部分组成: 
                              T统计量:它是这么一种标志,与不同两个随机过程之间成比例并且幅度和差异的显著程度有关3。 
                              p值:两个过程相同的概率。如果接近1,这两个过程是几乎完全相同的。越靠近零,两个过程越可能有不同的均值。 
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值