繁体   English   中英

在Python中集成离散点

[英]Integrating Discrete point in Python

我有两个numpy数组(x,y) -

import numpy as np
import scipy 
from scipy.integrate import simps

y=np.array([1,1,2,1,-2])
x=np.array([0,1,2,3,4])

绘制时看起来像这样 - (蓝线) 在此输入图像描述 黑线突出显示实际点。 我希望在x轴上的两个点(标记为红线)之间进行积分,这两个点不在原始数据集中。 目标是在上图中找到灰色阴影区域(两条红线之间)。

我怎么在python中做到这一点? 使用python SciPy库我可以像这样集成

scipy.integrate.trapz(y,x)

这让我在灰色区域阴影区域 - 在此输入图像描述

但如果我在x轴上的点和1.5和2.2之间进行积分,则trapz会给下面的灰色阴影区域 - 在此输入图像描述

我该如何理解这一点。

PS-线图不能表示为函数,因为原始数组中有许多随机点。

任何正确方向的见解都会有所帮助

scipy插值器(例如InterpolatedUnivariateSpline )具有integral方法。 例如,

In [23]: from scipy.interpolate import InterpolatedUnivariateSpline

In [24]: x = np.array([0, 1, 2, 3, 4])

In [25]: y = np.array([1, 1, 2, 1, -2])

In [26]: f = InterpolatedUnivariateSpline(x, y, k=1)  # k=1 gives linear interpolation

In [27]: f.integral(1.5, 2.2)
Out[27]: 1.2550000000000003

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM