如何在 Python 中集成两个一维数据数组?

Posted

技术标签:

【中文标题】如何在 Python 中集成两个一维数据数组?【英文标题】:How do I integrate two 1-D data arrays in Python? 【发布时间】:2013-07-10 05:43:15 【问题描述】:

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

与其在数据中插入分段函数然后尝试对其进行积分,但我遇到了麻烦,我可以使用什么东西来简单地通过评估数组来提供积分吗?

在搜索解决方案时,我看到了对 iPython 和 Pandas 的引用,但我无法找到这些包中有助于完成这项任务的部分。

如果无法简单地集成数组,您能否就处理此任务的最佳方式提供一些建议?

【问题讨论】:

【参考方案1】:

Scipy has some nice tools to perform numerical integration.

例如,您可以使用scipy.integrate.simps 执行辛普森规则,您可以将其传递如下:

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

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

x:array_like,可选 如果给定,则采样 y 的点。

dx:整数,可选 沿 y 轴的积分点间距。仅在 x 为无时使用。默认为 1。

轴:int,可选 要整合的轴。默认是最后一个轴。

even : ‘avg’, ‘first’, ‘str’, 可选

‘avg’:平均两个结果:1) 使用前 N-2 个区间 最后一个区间的梯形规则和 2) 使用最后 N-2 个区间和第一个区间的梯形规则。

‘first’:对前 N-2 个区间使用 Simpson 规则 最后一个区间的梯形规则。

‘last’ : 对最后 N-2 个区间使用 Simpson 规则 第一个区间的梯形规则。

所以你可以使用你的两个数组进行数值积分。

【讨论】:

如果您要处理多个数组/列表怎么办?如何执行集成? 你让我很开心,非常感谢......它就像魔术一样工作,节省了很多时间【参考方案2】:

Scipy 有一个 integration 功能可以帮助您。

如果您想使用cumulative sum of trapezoids 进行集成,这可能是一系列点的最佳选择。

你可以这样做:

>>> 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()

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

【讨论】:

无法编辑您的帖子。梯形累积和的实际正确链接在这里:docs.scipy.org/doc/scipy/reference/generated/…

以上是关于如何在 Python 中集成两个一维数据数组?的主要内容,如果未能解决你的问题,请参考以下文章

Python,例如有两个一维数组,怎么变成二维数组?

如何从python中的两个一维数组中绘制相似度热图?

ci框架在查询数据库,如何返回一个一维数组,我查的是多条数据的一个字段

如何在 Python 中集成 beta 发行版

如何在 Eclipse 中集成 pep8.py?

如何在IOS SDK中集成多个卖家的paypal?