2014-01-08 33 views
4

我已经使用scipy.spatial.distance.pdist(X)计算欧几里得距离的每一对文章X的元素之间度量:找到最小值的索引在pdist冷凝距离矩阵

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的指数为每个元素在十

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

回答

6

我们将以结果的正方形形式进行操作。首先,要排除“纽约是最接近纽约”的答案,

numpy.fill_diagonal(distances, numpy.inf) 

然后,它是沿轴线的简单argmin

closest_points = distances.argmin(axis=0) 
+0

这正是我一直在寻找。谢谢。 –

+0

所以你应该“接受”答案:-) –