2017-06-05 138 views
0

我使用Python 2.7與scipy來計算數組的距離矩陣。python如何從scipy濃縮距離矩陣中獲得適當的距離值

我不明白如何在返回的濃縮矩陣中找到想要的距離值。

見例如

from scipy.spatial.distance import pdist 
import numpy as np 

a = np.array([[1],[4],[0],[5]]) 
print a 
print pdist(a) 

將打印

[ 3. 1. 4. 4. 1. 5.] 

我發現here,在精簡的矩陣的ij成分應存放在那裏ithread如果他們的意思是IJ想知道i和j項之間的距離如i * j或str.join(i,j),例如1,2 - > 2或12.

我無法找到一致的方法來知道想要的索引。

查看我的示例,如果第一個選項有效,則應該期望從條目0到其他任何位置的所有距離都將存儲在條目0中。

任何人都可以闡述一下我怎樣才能從條目x到條目y提取我想要的距離?我在尋找哪個指數?

謝謝!

回答

2

此矢量在縮寫形式。它枚舉所有對在自然次序索引的(在你的例子0,10,20,30,41,21,31,42,32,4),併產生在這些陣列條目中的元件之間的距離。

還有squareform函數,它將壓縮形式轉換爲方形矩陣形式(反之亦然)。正方形矩陣形式正是您期望的,即在條目ij(行i,列j)中,它存儲了第i個條目和第j個條目之間的距離。例如,如果在代碼末尾添加print squareform(d),則輸出將爲:

array([[ 0., 3., 1., 4.], 
     [ 3., 0., 4., 1.], 
     [ 1., 4., 0., 5.], 
     [ 4., 1., 5., 0.]])