使用直接的numpy广播,您可以执行以下操作:
dist = np.sqrt(((a[:, None] - b[:, :, None]) ** 2).sum(0))
另外,scipy
有一个例程可以稍微提高效率(特别是对于大型矩阵)
from scipy.spatial.distance import cdist
dist = cdist(a, b)
我将避免依赖于分解矩阵乘积(形式为A ^ 2 + B ^ 2-2AB)的解决方案,因为由于浮点舍入误差,它们在数值上可能不稳定。
计算numpy中2个点列表的距离
使用直接的numpy广播,您可以执行以下操作:
dist = np.sqrt(((a[:, None] - b[:, :, None]) ** 2).sum(0))
另外,scipy
有一个例程可以稍微提高效率(特别是对于大型矩阵)
from scipy.spatial.distance import cdist
dist = cdist(a, b)
我将避免依赖于分解矩阵乘积(形式为A ^ 2 + B ^ 2-2AB)的解决方案,因为由于浮点舍入误差,它们在数值上可能不稳定。