如何在Python中集成两个1-D数据阵列?

use*_*770 10 python arrays integration interpolation

我有两个列表数据数组,x和y,我不知道生成数据的函数.我希望能够在沿x轴的任何点评估数据产生的线的积分.

而不是将分段函数插入数据然后尝试集成我遇到的问题,我可以使用哪些东西只是通过评估数组来提供积分?

在搜索解决方案时,我看到了对iPython和Pandas的引用,但我无法找到有助于此任务的那些软件包的部分.

如果没有办法简单地集成数组,你能提供一些关于处理这个任务的最佳方法的建议吗?

jh3*_*314 10

Scipy有一些很好的工具来执行数值积分.

例如,您可以使用scipy.integrate.simps执行simpson的规则,并且可以传递以下内容:

scipy.integrate.simps(y,x = None,dx = 1,axis = -1,even ='avg')

参数:
y:array_like要集成的数组.

x:array_like,optional如果给定,则采样y的点.

dx:int,可选的积分点沿y轴的间距.仅在x为None时使用.默认值为1.

axis:int,可选要集成的轴.默认是最后一个轴.

甚至:{'avg','first','str'},可选

'avg':平均两个结果:1)在最后一个区间使用具有梯形规则的第一个N-2区间,以及2)在第一个区间使用具有梯形规则的最后N-2个区间.

'first':在最后一个区间使用Simpson规则作为前N-2区间的梯形规则.

'last':在最后一个N-2区间使用Simpson规则,在第一个区间使用梯形法则.

因此,您可以使用两个数组进行数值积分.


Ste*_*han 7

Scipy具有可以帮助您的集成功能.

如果你想使用梯形累积和来进行积分,这对于一系列点可能是最好的.

你可以这样做:

>>> from scipy import integrate
>>> x = np.linspace(-2, 2, num=20)
>>> y = x
>>> y_int = integrate.cumtrapz(y, x, initial=0)
>>> plt.plot(x, y_int, 'ro', x, y[0] + 0.5 * x**2, 'b-')
>>> plt.show()
Run Code Online (Sandbox Code Playgroud)

这也将绘制数据并以图形方式显示给您.这是集成调用integrate.cumtrapz(y, x, initial=0),其中x和y是您的两个数组.