首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python入门与进阶之数据分析工具SciPy

SciPy

引言

本文介绍了 scipy 中几个最基本的函数模块,需要用到数学函数的时候就需要寻找 scipy 模块的帮助啦~

01 SciPy 简介

1.1 SciPy是什么?

SciPy是NumPy的外拓展,它以NumPy的的数据结构为基础。因此,SciPy中的大多数数据也由一维或者二维的ndarray组成。

SciPy为了完成类似Mathematica等数学软件的功能,它在NumPy的基础上增加了众多的数学计算,科学计算以及工程计算中的常用模块,包含:

• linalg-线性代数

• integrate-积分和常微分方程的数值解

• signal-信号处理

• ndimage-图像处理

• cluster-聚类算法

• fftpack-傅里叶变换

• interpolate-差值运算

……

1.2 SciPy的安装

Anaconda里面已经安装过SciPy

SciPy的一般不导入整个库,根据需要导入相应的模块。

> from scipy import optimize

> from scipy import linalg

> from scipy import stats

05 数值积分-integrate

5.1 数值积分

scipy.integrate.quad(func, a, b):

> from scipy import integrate

> x2 = lambda x: x**2

> integrate.quad(x2, 0, 4)

(21.333333333333332, 2.3684757858670003e-13)

带参数的积分的运算:

> from scipy.integrate import quad

> def integrand(x, a, b):

... return a*x**2 + b

...

> a = 2

> b = 1

> I = quad(integrand, 0, 1, args=(a,b))

> I

(1.6666666666666667, 1.8503717077085944e-14)# 积分值和误差大小

二元函数的积分为integrate.dblquad()

> from scipy.integrate import dblquad

> area = dblquad(lambda x, y: x*y, 0, 0.5, lambda x: 0, lambda x: 1-2*x)

> (0.010416666666666668, 1.1564823173178715e-16)

多元函数的积分为integrate.nquad()

> func = lambda x0,x1,x2,x3 : x0**2 + x1*x2 - x3**3 + np.sin(x0) + (1 if (x0-.2*x3-.5-.25*x1>0) else 0)

> integrate.nquad(func, [[0,1], [-1,1], [.13,.8], [-.15,1]])

(1.5267454070738633, 2.9437360001402324e-14, {'neval': 388962})

5.2 ODE解法

integrate模块中的scipy.integrate.odeint() 函数可以对一阶微分方程,和一阶微分方程组求数值解。

scipy.integrate.odeint(func, y0, t)

> def f(y, t):

return -2 * y * t

> t = np.arange(0, 2, 0.01)

> y0 = 1

> odeint(f, y0, t)

array([[ 1. ],

[ 0.99990001],

...,

[ 0.01906122]])

参考资料:

Python_SciPy课件自编-张祎璘

scipy官方文档

-END-

作者 / 彭越

排版 / 廖宸

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券