Редактировать :
Оглядываясь назад, я заметил, что это решение не является точным и, возможно, в некоторых случаях оно вообще не работает. Пока нет другого лучшего ответа, я оставлю это здесь.
Вы можете использовать
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)