使用欧几里德距离在 numpy 数组列表中查找 numpy 数组的最近邻居

Bas*_*ier 4 python arrays algorithm numpy nearest-neighbor

我有一个 n 维向量,我想使用欧几里得距离在 n 维向量列表中找到它的 k 个最近邻。

我编写了以下代码(k=10),它可以工作,但运行速度太慢,我想知道是否有更优化的解决方案。

def nearest_neighbors(value, array, nbr_neighbors=1):
    return np.argsort(np.array([np.linalg.norm(value-x) for x in array]))[:nbr_neighbors]
Run Code Online (Sandbox Code Playgroud)

sas*_*cha 5

使用 scipy 的kd-tree

这里有一个小例子。

许多人似乎抱怨性能并推荐sklearn 的实现(链接 sklearn.neighbors,它在内部使用此数据结构)!