Python 两个for循环的优化

Python 两个for循环的优化,python,numpy,optimization,Python,Numpy,Optimization,我正在尝试优化以下代码: 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(p

我正在尝试优化以下代码:

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))

假设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

假设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

你好请您提供一个可复制的示例(包括一些输入和输出),以便愿意提供帮助的人可以尝试easierHi!请您提供一个可复制的示例(包括一些输入和输出),以便愿意提供帮助的人可以更轻松地尝试