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

2024-01-21

我用过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()是要使用的函数,但我从这里迷失了。感谢您提前提供的任何帮助。


我们将对结果的平方形式进行运算。首先,排除“纽约距离纽约最近”的答案,

numpy.fill_diagonal(distances, numpy.inf)

然后,就是一个简单的argmin沿轴:

closest_points = distances.argmin(axis=0)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找 pdist 压缩距离矩阵中最小值的索引 的相关文章

随机推荐