我有一个np数组,它的大小是1000x1000,其中每个元素都是实数。我想找到这个np数组每一行中每一点的5个最近点。这里的距离度量可以是abs(x-y)。我已经试过了
for i in range(X.shape[0]):
knn = NearestNeighbors(n_neighbors=5)
knn.fit(X[i])
for j in range(X.shape[1])
d = knn.kneighbors(X[i,j], return_distance=False)
然而,这对我来说并不管用,我也不知道这有多有效。有办法吗?我见过很多比较向量的方法,但是没有任何方法可以比较单个元素。我知道我可以使用for循环和循环来找到最小的k,但这将是计算开销。KD树能解决这个问题吗?我试过类似的方法
Finding index of nearest point in numpy arrays of x and y coordinates
但是,我不能让这个工作。有没有什么我不知道的可以完成这个任务的numpy函数?在
为数据的每一行构造一个带有^{} 的kdtree。在
下面是一个
argsort
的解决方案,它努力利用简单的度量:输出:
^{pr2}$我不太确定你想要怎样的最终结果。但这绝对能满足你的需要。在
抓取上面的三角形索引来跟踪每行的每个点的组合
^{pr2}$生成所有距离的数组
每行找出最接近的5
然后
x1[tpos]
给出最接近对中第一个点的行方向位置,而x2[tpos]
给出最近对中的第二个位置。在相关问题 更多 >
编程相关推荐