python数据分析第三方库scipy_Python数据分析工具库-Scipy 矩阵支持库
SciPy函数库在NumPy库的基础上增加了众多的数学、科学以及工程计算中常用的库函数。例如线性代数、常微分方程数值求解、信号处理、图像处理、稀疏矩阵等等。可以进行插值处理、信号滤波以及用C语言加速计算。
1、积分(scipy.integrate)
scipy.integrate.quad 计算定积分
scipy.integrate.quad(func, a, b, args=(), full_output=0, epsabs=1.49e-08, epsrel=1.49e-08, limit=50, points=None, weight=None, wvar=None, wopts=None, maxp1=50, limlst=50)
常见输入参数介绍:
func:表示定积分的函数
a:float,表示积分上限(使用numpy.inf表示正无穷)
b:float,表示积分下限(使用-numpy.inf表示负无穷)
输出参数:
y:float,从b到a函数func的积分
abserr:float,对结果y绝对误差的估计
计算定积分
>>> from scipy import integrate
>>> x2 = lambda x: x**2
>>> integrate.quad(x2, 0, 4)
(21.333333333333332, 2.3684757858670003e-13)
>>> print(4**3 / 3.) # analytical result
21.3333333333
计算定积分
>>> invexp = lambda x: np.exp(-x)
>>> integrate.quad(invexp, 0, np.inf)
(1.0, 5.842605999138044e-11)
SciPy常见的积分如下:
2、插值(scipy.interpolate)
插值是在直线或曲线上的两点之间找到值的过程。这种插值工具不仅适用于统计学,而且在科学,商业或需要预测两个现有数据点内的值时也很有用。
class scipy.interpolate.interp1d(x, y, kind='linear', axis=-1, copy=True, bounds_error=None, fill_value=nan, assume_sorted=False)
用x和y来逼近指定函数f:y=f(X)。interp1d返回一个函数,调用该方法可使用插值来查找新点的值。
输入参数:
x:一维数组;
y:插值函数中x对应值;
kind:插值的类型,包含‘linear’, ‘nearest’, ‘zero’, ‘slinear’, ‘quadratic’, ‘cubic’, ‘previous’, ‘next’等。
>>> import matplotlib.pyplot as plt
>>> from scipy import interpolate
>>> x = np.arange(0, 10)
>>> y = np.exp(-x/3.0)
>>> f = interpolate.interp1d(x, y)
>>> xnew = np.arange(0, 9, 0.1)
>>> ynew = f(xnew) # 使用线性插值方法返回xnew对应的插值
>>> plt.plot(x, y, 'o', xnew, ynew, ‘-‘)
>>> plt.show()
result:
3、文件操作(scipy.io)
scipy的文件操作可以对matlab、HB-format、WAV、NetCDF、IDL.sav、arff等格式文件进行操作。
scipy.io.loadmat(file_name, mdict=None, appendmat=True, **kwargs)
加载matlab文件,返回一个dict,key为变量名,value为加载的矩阵。
scipy.io.savemat(file_name, mdict, appendmat=True, format='5', long_field_names=False, do_compression=False, oned_as='row')
保存mat格式文件,file_name为保存文件名,mdict为保存的键值对。
from scipy import io as spio
>>>spio.savemat("test.mat", {'a':a})
读取图片文件 导包:from scipy import misc 读取:data = misc.imread("123.png”)
与matplotlib中plt.imread('fname.png')类似 ;执行misc.imread时可能提醒不存在这个模块,那就安装pillow的包。
4、scipy中的线性代数(scipy.linalg)
最好结合矩阵分析或线性代数课程书一起看
numpy中也有线性代数库Linear algebra (numpy.linalg),但是推荐用scipy.linalg代替numpy.linalg,scipy.linalg中包含大部分numpy.linalg中的函数,且在同名函数中包含更多的功能。
求矩阵的逆
scipy.linalg.inv(a, overwrite_a=False, check_finite=True)
>>> from scipy import linalg
>>> a = np.array([[1., 2.], [3., 4.]])
>>> linalg.inv(a)
array([[-2. , 1. ],
[ 1.5, -0.5]])
如果矩阵a不可逆,则会抛异常LinAlgError: singular matrix
求解线性方程组Ax=b
scipy.linalg.solve(a, b, sym_pos=False, lower=False, overwrite_a=False, overwrite_b=False, debug=None, check_finite=True, assume_a='gen', transposed=False)
>>> a = np.array([[3, 2, 0], [1, -1, 0], [0, 5, 1]])
>>> b = np.array([2, 4, -1])
>>> from scipy import linalg
>>> x = linalg.solve(a, b)
>>> x
array([ 2., -2., 9.])
Eigenvalue Problems 求特征值及特征向量
奇异值分解
scipy.linalg.svd(a, full_matrices=True, compute_uv=True, overwrite_a=False, check_finite=True, lapack_driver='gesdd’)
>>> from scipy import linalg
>>> m, n = 9, 6
>>> a = np.random.randn(m, n) + 1.j*np.random.randn(m, n)
>>> U, s, Vh = linalg.svd(a)
>>> U.shape, s.shape, Vh.shape
((9, 9), (6,), (6, 6))
5、优化算法(scipy.optimize)
该模块包含以下几个算法:
使用各种算法(例如BFGS,Nelder-Mead单纯形,牛顿共轭梯度,COBYLA或SLSQP)的无约束和约束最小化多元标量函数minimize()
全局(蛮力)优化程序(例如,anneal(),basinhopping())
最小二乘最小化(leastsq())和曲线拟合(curve_fit())算法
标量单变量函数最小化(minim_scalar())和根查找(newton())
使用多种算法(例如,Powell,Levenberg-Marquardt混合或Newton-Krylov等大规模方法)的多元方程系统求解
6、统计函数(scipy.stats)
所有的统计函数都位于子包scipy.stats中,该模块包含大量的概率分布以及不断增长的统计函数库。
T-检验stats.ttest_ind
scipy.stats.ttest_ind(a, b, axis=0, equal_var=True, nan_policy='propagate’)
>>> from scipy import stats
>>> np.random.seed(12345678)
>>> rvs1 = stats.norm.rvs(loc=5,scale=10,size=500)
>>> rvs2 = stats.norm.rvs(loc=5,scale=10,size=500)
>>> stats.ttest_ind(rvs1,rvs2)
(0.26833823296239279, 0.78849443369564776)
输出第一个参数为T-检验值,第二个为概率p: 两个过程相同的概率。如果其值接近1,那么两个过程几乎可以确定是相同的,如果其值接近0,那么它们很可能拥有不同的均值。
参考文献
python数据分析第三方库scipy_Python数据分析工具库-Scipy 矩阵支持库相关推荐
- Python 数据分析三剑客之 NumPy(六):矩阵 / 线性代数库与 IO 操作
CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...
- c开发 易语言支持库,易写易库-用易语言开发易语言支持库.pdf
易写易库-用易语言开发易语言支持库 易写易库(EXEK)用户手册 版本:0.2 作者:liigo,/liigo 时间:2008.10 概述 EXEK EXEK "易写易库(EEXXEEKK) ...
- 易语言支持库配置闪退丨支持库配置崩溃_易语言打开支持库配置就闪退怎么办?
易语言支持库配置闪退打不开怎么办? 易语言支持库配置闪退解决方法丨支持库配置崩溃_易语言打开支持 易语言支持库配置闪退丨支持库配置崩溃_易语言打开支持库配置就闪退怎么办? 很多人都遇到过 打开易语言支 ...
- python可视化窗口库_Python可视化工具介绍——找到合适的库
Python有很多可视化工具,大体上可以分为基于matplotlib的工具库和基于JS的工具库. 有如此丰富的选择是幸福的,无论你要画什么图,都能找到相对的库.但与此同时,弄清楚使用哪个工具更合适可能 ...
- 我整理了一些Python测试的库,看一下有没有你需要的库
测试开发 Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. selenium - web UI自动化测试. –推荐 mechanize- Python中有状 ...
- java支持库 易语言_易语言支持库简单安装加载添加
1,首先,准备好欲安装的易语言支持库文件(fne.fnr或lib为后缀名等文件) 2,接下来,有必要对易语言支持库的文件做重要讲解.要安装支持库之前,先要弄明白易语言安装目录下的两个文件夹:lib和s ...
- 易语言外部数据库MySQL支持库Access数据库Sqlite数据应用
语言虽然有自己的数据库, 但易数据库只是以简单的.类似表格的形式组织数据信息,是一个小型数据库管理系统.有时编程中必须使用其它数据库.易语言支持以ODBC方式和ADO方式操作外部数据库. 一.ODBC ...
- Android支持库
# 支持库 支持库命名规范 引入支持库时的命名规范为:"group:name:version" 例如: implementation 'com.android.support:ap ...
- DCMTK 3.6.2(MD支持库)与Microsoft Visual Studio 2017开发环境的搭建
DCMTK 3.6.2(MD支持库)与Microsoft Visual Studio 2017开发环境的搭建 DCMTK 362MD支持库与Microsoft Visual Studio 2017开发 ...
- 【Xamarin.Android】掌握android支持库
Android支持库是每个Android应用程序中必不可少的一部分,你会发现它们无处不在.支持库为开发人员提供了将Android的最新和最强大功能添加到应用程序的能力,同时保持与旧版本Android的 ...
最新文章
- 文件时间信息在测试中的应用
- ORA-01031: insufficient privileges的解决方法
- Linux 下 git连接github的使用
- SQL Server 分布式数据库的问题和解决方法
- php函数表达式,php正则表达式常用函数介绍
- Oracle Spatial分区应用研究之一:分区与分表查询性能对比
- Mysql基本用法-01
- handsontable的单元格操作方法
- linux虚拟机的密钥,Linux虚拟机之间实现密钥登陆
- cad lisp 背景遮罩_AutoCAD心得体会
- C语言及程序设计概述
- 2016年软考程序员模拟预测习题20题
- java类注释格式模板
- 【Practical】决策系统与粗糙集
- 2020牛客国庆集训派对day2 补题J
- 求质数个数(求素数个数
- 二维码解码器Zbar+VS2010开发环境配置(使用opencv库)
- 对不起,我现在喜欢划船了,不喜欢爬山了
- Android 内存优化- ANR 详解
- C/C++程序开发: cJSON的使用(创建与解析JSON数据)