【问题标题】:Find the index of the min value in a pdist condensed distance matrix在 pdist 压缩距离矩阵中找到最小值的索引
【发布时间】:2014-01-25 21:52:00
【问题描述】:

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

【问题讨论】:

    标签: python data-structures numpy matrix scipy


    【解决方案1】:

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

    numpy.fill_diagonal(distances, numpy.inf)
    

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

    closest_points = distances.argmin(axis=0)
    

    【讨论】:

      猜你喜欢
      • 2012-10-16
      • 2011-08-08
      • 1970-01-01
      • 2016-08-15
      • 2020-07-04
      • 2018-03-09
      • 1970-01-01
      • 1970-01-01
      • 2017-10-05
      相关资源
      最近更新 更多