我正在尝试优化以下代码:
error1 = 0
for point1 in p1:
min_dist = 1000000000
for point2 in p2:
min_dist = min(min_dist, l2(point1, point2))
error1 += min_dist
p1,p2是2D点([x,y])的数组
l2是:np.linalg.norm(np.array(p1)-np.array(p2))
答案 0 :(得分:0)
假设p1有N个点,p2有M个点。
import numpy as np
pt1 = np.array(p1) # NxD, here D=2
pt2 = np.array(p2) # MxD
d = pt1[:, None, :] - pt2[None, :, :] # pairwise subtraction, NxMxD
d = np.sum(d**2, axis=2).min(axis=1) # min square distance, N
error1 = np.sqrt(d).sum() # output, scalar