2016-04-05 65 views
3

我一直有興趣在Python中使用[scipy.spatial.distance.pdist()][1],它對於我一直在研究的一些應用程序來說已經變得有用和快速。在python中使用pdist()來定義你自定義的距離函數

我需要使用定製的成對距離函數,而不是度量標準定義的標準默認距離度量。讓我們做一個簡單的例子,假設我不想使用euclidean距離函數如下所示:

Y = pdist(X, 'euclidean') 

相反,我要定義的歐幾里得功能自己,把它作爲一個功能或參數pdist()。如何將euclidean距離函數的實現傳遞給此函數以獲得完全相同的結果。這個問題的答案,將幫助我以我感興趣的方式使用函數。

在MATLAB中,我知道如何在Python中使用`pdist()',我還沒有。感謝您的建議

回答

6

有一個在documentation for pdist一個例子:

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

dm = pdist(X, lambda u, v: np.sqrt(((u-v)**2).sum())) 

如果你想使用一個普通的功能,而不是一個拉姆達功能相當於將

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

def dfun(u, v): 
    return np.sqrt(((u-v)**2).sum()) 

dm = pdist(X, dfun) 
相關問題