python - 在 python 中使用 pdist() 和您定义的自定义距离函数

标签 python scipy distance

我一直对 scipy.spatial.distance.pdist(...) 的用法感兴趣在 python 中,它对于我一直在处理的一些应用程序来说已经变得有用且快速。

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

 Y = pdist(X, 'euclidean')

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

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

关于python - 在 python 中使用 pdist() 和您定义的自定义距离函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36422949/

相关文章:

python - 如何使用selenium和python获取网站的主体宽度?

python - 如何使用python检测复选框

python - 将对数正态分布的拟合 PDF 缩放为 python 中的直方图

machine-learning - 我们可以使用多少种距离函数?

c - 如何计算二维矩阵中两点之间的距离

algorithm - 根据距离和方向创建坐标

Python:有效计算字典列表中键的唯一值的数量

python - 尝试理解元素树

numpy - 与实空间卷积相比,FFT 卷积的缺点是什么?

python - 使用python的并行数值积分