向量化/线性代数点之间的距离?

2024-09-25 12:27:53 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一组点

import numpy as np
pts = np.random.rand(100,3)  # 1000 points, X, Y, Z along second dimension

计算每个点组合之间距离的简单方法涉及到一个双for循环,对于大量的点来说速度会非常慢

def euclidian_distance(p1, p2):
    d = p2 - p1
    return np.sqrt(d**2).sum()

out = np.empty((pts.shape[0], pts.shape[0]))
pts_swapped = pts.swapaxes(0,1)
for idx, point in enumerate(pts_swapped):
    for idx2, point_inner in enumerate(pts_swapped):
        out[idx,idx2] = euclidian_distance(point, point_inner)

如何将此计算矢量化?你知道吗


Tags: infornpoutptsdistancepointp2