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

Find the area between two curves separately in numpy

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

我找到了this post,但它只计算了两个面积的总和。

如果我们画我想要的东西,我想要分别是蓝色区域和红色区域。

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

您可以使用

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)