我对在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)

10-07 12:52