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

时间:2019-03-15 12:13:20

标签: python numpy line area

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

  • y1> y2
  • y1

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

如果我们绘制所需的内容,我将分别需要蓝色区域和红色区域。

separately

1 个答案:

答案 0 :(得分:1)

修改: 事后我发现,这种解决方案并不精确,在某些情况下根本无法使用。只要没有其他更好的答案,我都会在这里保留。

您可以使用

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)