在numpy中分别找到两条曲线之间的区域
Find the area between two curves separately in numpy
我在点列表中有两条不同的曲线 (y1, y2),我想在以下情况下找到曲线之间的区域:
- y1 > y2
- 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)
我在点列表中有两条不同的曲线 (y1, y2),我想在以下情况下找到曲线之间的区域:
- y1 > y2
- 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)