我大概有一些东西
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,但似乎没有什么效果。
发布于 2018-10-31 11:11:50
Broadcast在扩展维度后,将事物向量化-
p1 = np.maximum(A[:,None,0],B[:,0])
p2 = np.minimum(A[:,None,1],B[:,1])
ret = np.maximum(0,p2-p1).sum()https://stackoverflow.com/questions/53081641
复制相似问题