在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])

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

我该如何在python中做呢?使用python SciPy库,我可以像这样集成

scipy.integrate.trapz(y,x)

这给了我灰色区域阴影区域-在Python中集成离散点

但是,如果我在x轴上的点之间说1.5和2.2之间进行积分,则陷印会给出阴影下方为灰色的区域-在Python中集成离散点

我该如何正确.

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

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

解决方法:

scipy插值器(例如InterpolatedUnivariateSpline)具有积分方法.例如,

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
上一篇:用Python拟合总和


下一篇:Python和scipy中的Meijer G函数