首页 > 解决方案 > 如何仅使用 numpy 从距离矩阵中提取数据点?

问题描述

我有两组数据点:

如何使用距离矩阵D提取k行 A ,其中它们与B中数据点的距离最小?矩阵的大小应为 nxk。我不想循环遍历矩阵的每一列和每一行,所以我对一种仅使用矩阵的方法感兴趣。

D = np.distance_matrix(A, B)

标签: numpyknn

解决方案


假设已经给出了完整的数组D并且“到B的距离”表示“到B中所有元素的所有距离中最小的”,那么它应该类似于

d = D.min(axis=1)  # m-long vector of distances from points in A to B
ord = d.argsort()  # an array of indices in d sorted by the corresponding values
kD = d[ord[:k],:]  # take first k elements

k如果远小于,这不是很有效m,因为它对所有元素进行排序,而不是仅仅找到kth。但它应该可以解决问题。


推荐阅读