在python中使用pdist(),并使用由

时间:2016-04-05 09:53:53

标签: python

我一直对在python中使用[scipy.spatial.distance.pdist()][1]感兴趣,这对于我一直在研究的一些应用程序来说非常有用和快速。

我需要使用成对距离函数,它是自定义的而不是由度量标准定义的标准默认距离度量。让我们举一个简单的例子,假设我不想使用euclidean距离函数,如下所示:

 Y = pdist(X, 'euclidean')

相反,我想自己定义欧几里德函数,并将其作为函数或参数传递给pdist()。如何将euclidean距离函数的实现传递给此函数以获得完全相同的结果。这个问题的答案将帮助我以我感兴趣的方式使用该功能。

在MATLAB中,我知道如何在python中使用`pdist()'我还没有。谢谢你的建议

1 个答案:

答案 0 :(得分:10)

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()))

如果你想使用常规函数而不是lambda函数,那么等效函数将是

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)