【发布时间】:2016-11-22 03:54:04
【问题描述】:
我有大约 1M 的二进制 numpy 数组,我需要获取它们之间的汉明距离以找到 de k-nearest-neighbours,我得到的最快方法是使用 cdist,返回一个带距离的浮点矩阵。
由于我没有足够的内存来获得一个 1Mx1M 的浮点矩阵,所以我一次做一个元素,如下所示:
from scipy.spatial Import distance
Hamming_Distance = distance.cdist(array1,all_array,'hamming')
问题是每个 Hamming_Distance 需要 2-3 秒,而 1m 文档需要一个永恒(而且我需要将它用于不同的 k)。
有什么最快的方法吗?
我正在考虑多处理或在 C 上实现,但我在理解它如何在 python 上进行多处理时遇到了一些麻烦,而且我不知道如何将 C 代码与 Python 代码混合使用。
【问题讨论】:
-
您正试图暴力破解一个您在资源附近没有任何地方可以暴力破解的问题。找到最近邻居的方法比计算所有成对距离并取较小的距离要好得多。
标签: python numpy optimization knn hamming-distance