2014-01-08 87 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

所以你應該「接受」答案:-) –