通过广播在轴上矢量化 np.minimum & np.minimum
Vectorizing np.minimum & np.minimum over axes with 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
二维区间的输入数组,B
是已知的二维区间数组,我正在尝试计算长度所有间隔之间的总交集。
有没有办法对其进行矢量化?我的第一个虽然是使用 np.maximize
和 np.minimize
以及广播,但似乎没有任何效果。
Broadcast
在扩展维度以向量化事物之后 -
p1 = np.maximum(A[:,None,0],B[:,0])
p2 = np.minimum(A[:,None,1],B[:,1])
ret = np.maximum(0,p2-p1).sum()
我大概有这样的东西
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
二维区间的输入数组,B
是已知的二维区间数组,我正在尝试计算长度所有间隔之间的总交集。
有没有办法对其进行矢量化?我的第一个虽然是使用 np.maximize
和 np.minimize
以及广播,但似乎没有任何效果。
Broadcast
在扩展维度以向量化事物之后 -
p1 = np.maximum(A[:,None,0],B[:,0])
p2 = np.minimum(A[:,None,1],B[:,1])
ret = np.maximum(0,p2-p1).sum()