Scipy是一个高级的科学计算库,它和
Numpy
联系很密切,Scipy一般都是操控Numpy数组来进行科学计算,Scipy让Python成为了半个MATLAB。Scipy包含的功能有最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算,而这些功能都是我们在之后进行数据分析需要的。下面是一些常用的Scipy的子模块。
Scipy是依赖于numpy的,所以在安装Scipy前需要先安装好Numpy。安装Scipy的方法和安装Numpy的方法是一样的,这里不再提及。由于Scipy非常的完备且复杂,在日常的数据分析中,并不是每一个都会用上,本文就简单介绍几个常用的并且比较有趣的子模块。
输入与输出(scipy.io)
scipy.io模块提供了多种功能来解决不同格式的文件输入和输出,包括Matlab,Wave,Arff,Matrix Market等等,最常见的是Matlab格式的。
loadmat()是打开一个Matlab文件,savemat()是保存一个Matlab文件,通过whosmat()可以列出Matlab文件中的变量。
优化算法(scipy.optimize)
Scipy的optimize模块提供了许多数值优化算法
非线性方程组求解(fsolve())
最小二乘拟合(leastsq())
除了上述的方程组求解和最小二乘拟合,Optimize还提供了诸如正弦波或者余弦波的曲线拟合(curve_fit()),全局最小值(basinhopping())等等函数,基本能够满足我们进行优化求解的需求。
统计函数(scipy.stats)
stats模块提供了大约80种连续随机变量和10多种离散分布变量,连续的和离散的随机变量都被包含在内。所有的连续随机变量都是rv_continuous的派生类的对象,而所有的离散随机变量都是rv_discrete的派生类的对象。此处以最常见的正态分布为例了解一下stats的基本用法。
生成服从指定分布的随机变量
概率密度函数和累积分布函数
统计检验
stats子模块也包括了诸如kstest 和normaltest等样本测试函数,用来检测样本是否服从某种分布。
除此之外,stats模块中还提供了一些描述函数,如下表,这里就不详细讲了,可以通过官网文档进行相关学习。
聚类
树状图如下:
k-means 聚类
有些时候我们可能不知道最终究竟聚成多少类,一个办法是用层次聚类的结果进行初始化。当然也可以直接输入某个数值。
通过上面的一些代码演示,相信你一定对Scipy有了一定的了解。如果你遇到了什么不能解决的问题,可以自行搜索获得解答。
在下一次的推送中,我们将对Pandas库进行相关的学习。
领取专属 10元无门槛券
私享最新 技术干货