У меня примерно есть что-то вроде
A = np.random.random([n, 2])
B = np.random.random([3, 2])
...
ret = 0
for b in B:
for a in A:
start = np.max([a[0], b[0]])
end = np.min([a[1], b[1]])
ret += np.max([0, end - start])
return ret
Если выразить словами, A
- это входной массив n
2D-интервалов, а B
- известный массив 2D-интервалов, и я пытаюсь вычислить длину общего пересечения между всеми интервалами.
Есть ли способ векторизовать его? Сначала я использовал np.maximize
и np.minimize
вместе с вещанием, но, похоже, ничего не работает.