站长杂谈

服务器中python库的使用-scipy

时间:2017-05-06 16:54 点击:

  服务器中python库的使用-scipy

  在从前的介绍中,我们为大家初步介绍了一些服务器里面python库中使用numpy的基本知识,相信香港服务器的使用者经过一段时间的刻苦学习已经能够熟练地使用numpy进行开发了,这的确是一件值得高兴的事情,但是我们知道服务于python的库是十分多的,仅仅知道numpy的使用想来是远远不够的,鉴于此,小编就为大家带来python库中的另一个经常使用到的函数库scipy。

  首先小编就给大家先简单的介绍一下Scipy的基本知识,通常我们认为scipy与numpy是一脉相承的,但是scipy是一种更加高端的数值计算库,一般我们认为SciPy函数库是在NumPy库的基础上增加了许多十分方便进行科学研究的数学、科学以及工程计算中常用的库函数,通过调用这些库函数可以快速的进行项目的开发,这些库函数包括线性代数、常微分方程数值求解、图像处理等。由于其涉及的领域众多、小编没有能力对其一一的进行介绍。在这里只能够进行一个入门性质的讲解,现在让我们看看如何用SciPy进行插值处理、信号滤波等科学运算。

  1:最小二乘拟合

  现在预先提供一组实验数据,我们现在已经知道了它们之间的函数关系:y = f(x),通过这些给定的数据,我们需要求解一些未知的参数。例如,如果f是一个线型函数f(x) = k*x+b,那么参数k和b就是我们需要求的值。将这些参数用 p进行统一的表示,我们可以得到一下需要求解的公式:

 

  这种算法被称之为最小二乘拟合,其目的就是求得使S最小的s,通常我们可以通过调用scipy中的子函数库optimize实现最小二乘拟合算法,具体的函数是leastsq。下面是用leastsq进行数据拟合的一个例子:

  def func(x, p):

  数据拟合所用的函数: A*sin(2*pi*k*x + theta)

  A, k, theta = p

  return A*np.sin(2*np.pi*k*x+theta)

  def residuals(p, y, x):

  实验数据x, y和拟合函数之间的差,p为拟合需要找到的系数

  return y - func(x, p)

  2: 函数最小值

  optimize库提供了几个求函数最小值的算法,例如:fmin, fmin_powell。我们以fmin为例,通过下面的程序求解卷积的逆运算演示fmin的功能。

  例如以下的简单函数

  y = x * h。

  假设已知其中的两个参数求其中的未知参数。这种运算被称为反卷积运算,是十分困难的,特别是在实际的运用中,测量系统的输出总是存在误差的。下面用fmin计算反卷积,这种方法只能用在很小规模的数列之上。

  def test_fmin_convolve(fminfunc, x, h, y, yn, x0):

  x (*) h = y, (*)表示卷积

  yn为在y的基础上添加一些干扰噪声的结果

  x0为求解x的初始值

  def convolve_func(h):

  计算 yn - x (*) h 的power

  fmin将通过计算使得此power最小

  return np.sum((yn - np.convolve(x, h))**2)

  # 调用fmin函数,以x0为初始值

  h0 = fminfunc(convolve_func, x0)

  3:数值积分

  数值积分是对定积分的数值求解,例如可以利用数值积分计算某个形状的面积。单位半圆曲线可以用下面的函数表示:

  def half_circle(x):

  return (1-x**2)**0.5

  下面的程序使用经典的分小矩形计算面积总和的方式,计算出单位半圆的面积:

  >>> N = 10000

  >>> x = np.linspace(-1, 1, N)

  >>> dx = 2.0/N

  >>> y = half_circle(x)

  >>> dx * np.sum(y[:-1] + y[1:]) # 面积的两倍

  3.1412751679988937

  关于服务器中python库scipy的使用小编就为大家介绍到这里了。

  如果您还有什么不明确或者是不懂的地方,欢迎来新世界主机咨询了解,详情请咨询Skype:vpssj.net@hotmail.com TEL: 400 1109 210。我们必将竭诚为您服务。