利用 Python 完成数据分析(5):Scipy的使用

Scipy是一个高级的科学计算库,它和Numpy联系很密切,Scipy一般都是操控Numpy数组来进行科学计算,所以可以说是基于Numpy之上了。Scipy有很多子模块可以应对不同的应用,例如插值运算,优化算法、图像处理、数学统计等。以下列出Scipy的子模块:

1.文件输入和输出:scipy.io

这个模块可以加载和保存matlab文件:

关于这个模块的文档:

https://docs.scipy.org/doc/scipy/reference/io.html#module-scipy.io

2.线性代数操作:scipy.linalg

假如我们要计算一个方阵的行列式,我们需要调用det()函数:

比如求一个矩阵的转置:

更多关于scipy.linalg请参考:

https://docs.scipy.org/doc/scipy/reference/linalg.html#module-scipy.linalg

3.快速傅里叶变换:scipy.fftpack

首先我们用numpy初始化正弦信号:

Numpy中也有用于计算快速傅里叶变换的模块:numpy.fft,但是scipy.fftpack是我们的首选,因为应用了更多底层的工具,工作效率要高一些。关于scipy.fftpack更多文档请参考:

https://docs.scipy.org/doc/scipy/reference/fftpack.html#module-scipy.fftpack

4.优化器:scipy.optimize

scipy.optimize通常用来最小化一个函数值,我们举个栗子,构建一个函数并绘制函数图:

如果我们要找出这个函数的最小值,也就是曲线的最低点。就可以用到BFGS优化算法(Broyden–Fletcher–Goldfarb–Shannoalgorithm):

可以得到最低点的值为-1.30644003,optimize.fmin_bfgs(f,0)第二个参数表示从点的位置最小化,找到最低点(该点刚好为全局最低点)。假如我从3点的位置开始梯度下降,那么得到的将会是局部最低点3.83746663:

http://docs.scipy.org/doc/scipy/reference/optimize.html#module-scipy.optimize

5.统计工具:scipy.stats

首先我们随机生成1000个服从正态分布的数:

这个工具还是蛮好用的,更多参考:

https://docs.scipy.org/doc/scipy/reference/stats.html#module-scipy.stats

还有像scipy的其他模块(计算积分、信号处理、图像处理的模块)就不一一介绍了,对这一部分还有兴趣继续了解的,请参考:https://docs.scipy.org/doc/scipy/reference/index.html

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180911G08DUR00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券