Python 在numpy中分别查找两条曲线之间的区域

Python 在numpy中分别查找两条曲线之间的区域,python,numpy,line,area,Python,Numpy,Line,Area,我在点列表中有两条不同的曲线(y1,y2),我想在以下情况下找到曲线之间的面积: y1>y2 y1

我在点列表中有两条不同的曲线(y1,y2),我想在以下情况下找到曲线之间的面积:

  • y1>y2
  • y1
我已经找到了,但它只计算两个区域的总和

如果我们画出我想要的,我想分别画蓝色区域和红色区域

编辑: 事后我注意到,这个解决方案并不精确,可能在某些情况下根本不起作用。只要没有其他更好的答案,我就把这个留在这里

你可以用

diff = y1 - y2 # calculate difference
posPart = np.maximum(diff, 0) # only keep positive part, set other values to zero
negPart = -np.minimum(diff, 0) # only keep negative part, set other values to zero
把蓝色和红色分开。然后用
np.trapz
计算它们的面积:

posArea = np.trapz(posPart)
negArea = np.trapz(negPart)

谢谢,我已经绘制了这些区域,看起来非常有前景。否则,这些区域与链接文章的区域不完全匹配。你知道为什么会这样吗?我刚刚注意到,这个解只是一个近似值,所以值并不完全正确。你能给我们看一些你尝试过的代码吗?