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
领取专属 10元无门槛券
私享最新 技术干货