通过广播矢量化轴上的np.minimum和np.minimum

时间:2018-10-31 10:52:25

标签: numpy numpy-broadcasting

我大概有类似的东西

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.maximizenp.minimize,但似乎没有任何效果。

1 个答案:

答案 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()