我大概有类似的东西
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间隔数组,我正在尝试计算total的长度所有间隔之间的交集。
有矢量化方法吗?我的第一个操作虽然是在广播中使用np.maximize
和np.minimize
,但似乎没有任何效果。
答案 0 :(得分:1)
Broadcast
在扩展尺寸以向量化事物之后-
p1 = np.maximum(A[:,None,0],B[:,0])
p2 = np.minimum(A[:,None,1],B[:,1])
ret = np.maximum(0,p2-p1).sum()