在pdist压缩距离矩阵中找到最小值的索引

5

我已经使用 scipy.spatial.distance.pdist(X) 计算了下面列表 X 中每对元素之间的欧几里得距离度量:

X = [[0, 3, 4, 2], [23, 5, 32, 1], [3, 4, 2, 1], [33, 54, 5, 12]]

这将返回一个简化的距离矩阵:
array([ 36.30426972,   3.87298335,  61.57109712,  36.06937759,
        57.88782255,  59.41380311])

对于每个元素X,我需要找到最近的其他元素的索引。

将压缩的距离矩阵转换为方形有助于可视化结果,但我无法编程地确定每个元素X的最近元素X的索引。

array([[  0.        ,  36.30426972,   3.87298335,  61.57109712],
       [ 36.30426972,   0.        ,  36.06937759,  57.88782255],
       [  3.87298335,  36.06937759,   0.        ,  59.41380311],
       [ 61.57109712,  57.88782255,  59.41380311,   0.        ]])

我认为argmin()是需要使用的函数,但是我不知道该怎么做。先行感谢您的帮助。

1个回答

9
我们将对结果进行平方处理。首先,为了排除“纽约最靠近纽约”的答案,
numpy.fill_diagonal(distances, numpy.inf)

然后,沿着一个轴进行简单的argmin

closest_points = distances.argmin(axis=0)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接