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 矩阵支持库相关推荐

  1. Python 数据分析三剑客之 NumPy(六):矩阵 / 线性代数库与 IO 操作

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

  2. c开发 易语言支持库,易写易库-用易语言开发易语言支持库.pdf

    易写易库-用易语言开发易语言支持库 易写易库(EXEK)用户手册 版本:0.2 作者:liigo,/liigo 时间:2008.10 概述 EXEK EXEK "易写易库(EEXXEEKK) ...

  3. 易语言支持库配置闪退丨支持库配置崩溃_易语言打开支持库配置就闪退怎么办?

    易语言支持库配置闪退打不开怎么办? 易语言支持库配置闪退解决方法丨支持库配置崩溃_易语言打开支持 易语言支持库配置闪退丨支持库配置崩溃_易语言打开支持库配置就闪退怎么办? 很多人都遇到过 打开易语言支 ...

  4. python可视化窗口库_Python可视化工具介绍——找到合适的库

    Python有很多可视化工具,大体上可以分为基于matplotlib的工具库和基于JS的工具库. 有如此丰富的选择是幸福的,无论你要画什么图,都能找到相对的库.但与此同时,弄清楚使用哪个工具更合适可能 ...

  5. 我整理了一些Python测试的库,看一下有没有你需要的库

    测试开发 Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. selenium - web UI自动化测试. –推荐 mechanize- Python中有状 ...

  6. java支持库 易语言_易语言支持库简单安装加载添加

    1,首先,准备好欲安装的易语言支持库文件(fne.fnr或lib为后缀名等文件) 2,接下来,有必要对易语言支持库的文件做重要讲解.要安装支持库之前,先要弄明白易语言安装目录下的两个文件夹:lib和s ...

  7. 易语言外部数据库MySQL支持库Access数据库Sqlite数据应用

    语言虽然有自己的数据库, 但易数据库只是以简单的.类似表格的形式组织数据信息,是一个小型数据库管理系统.有时编程中必须使用其它数据库.易语言支持以ODBC方式和ADO方式操作外部数据库. 一.ODBC ...

  8. Android支持库

    # 支持库 支持库命名规范 引入支持库时的命名规范为:"group:name:version" 例如: implementation 'com.android.support:ap ...

  9. DCMTK 3.6.2(MD支持库)与Microsoft Visual Studio 2017开发环境的搭建

    DCMTK 3.6.2(MD支持库)与Microsoft Visual Studio 2017开发环境的搭建 DCMTK 362MD支持库与Microsoft Visual Studio 2017开发 ...

  10. 【Xamarin.Android】掌握android支持库

    Android支持库是每个Android应用程序中必不可少的一部分,你会发现它们无处不在.支持库为开发人员提供了将Android的最新和最强大功能添加到应用程序的能力,同时保持与旧版本Android的 ...

最新文章

  1. 文件时间信息在测试中的应用
  2. ORA-01031: insufficient privileges的解决方法
  3. Linux 下 git连接github的使用
  4. SQL Server 分布式数据库的问题和解决方法
  5. php函数表达式,php正则表达式常用函数介绍
  6. Oracle Spatial分区应用研究之一:分区与分表查询性能对比
  7. Mysql基本用法-01
  8. handsontable的单元格操作方法
  9. linux虚拟机的密钥,Linux虚拟机之间实现密钥登陆
  10. cad lisp 背景遮罩_AutoCAD心得体会
  11. C语言及程序设计概述
  12. 2016年软考程序员模拟预测习题20题
  13. java类注释格式模板
  14. 【Practical】决策系统与粗糙集
  15. 2020牛客国庆集训派对day2 补题J
  16. 求质数个数(求素数个数
  17. 二维码解码器Zbar+VS2010开发环境配置(使用opencv库)
  18. 对不起,我现在喜欢划船了,不喜欢爬山了
  19. Android 内存优化- ANR 详解
  20. C/C++程序开发: cJSON的使用(创建与解析JSON数据)

热门文章

  1. python写入文件没反应_Python write 函数写文件失败
  2. 用PS把人物皮肤处理的质感又通透
  3. 人的一生,到底在追求什么?
  4. Airtest微信朋友圈自动点赞
  5. docker运行rabbitmq
  6. 还说治理类项目不性感?这个DAO上线半年吸金700万美元
  7. 【coq】函数语言设计 笔记 07 - indProp
  8. 深度学习模型知识产权保护怎么做?看看IJCAI 2021这场Workshop说了什么
  9. Android NDK篇-C++之 SLT 中的容器与函数谓词
  10. 王道考研计算机网络第三章--数据链路层