我对在python中使用 scipy.spatial.distance.pdist(...)
感兴趣,这对于我一直在处理的某些应用程序非常有用且快速。
我需要使用成对的距离函数,该函数是自定义的,而不是度量标准定义的标准默认距离度量标准。让我们做一个简单的例子,假设我不想使用euclidean
distance函数,如下所示:
Y = pdist(X, 'euclidean')
相反,我想自己定义欧几里得函数,并将其作为函数或参数传递给
pdist()
。如何将euclidean
distance函数的实现传递给该函数以获取完全相同的结果。该问题的答案将帮助我以自己感兴趣的方式使用该功能。在MATLAB中,我知道如何使用
pdist()
,但在Python中我还没有使用。谢谢你的建议 最佳答案
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)