【发布时间】:2019-08-09 04:46:44
【问题描述】:
我在 2D 空间中有 N 个点(N 行,2 列),我想为点集中的每个点 (x_n,y_n) 找到最近的 k 个点,然后对它们进行排序。这是用于此目的的代码。我想加快以下代码:
def nearst_sort(x,y,k):
N = len(x)
A = np.zeros((N,k))
R = np.zeros((N,N))
R = (x - x[np.newaxis].transpose())**2 + (y -y[np.newaxis].transpose())**2
ix = np.argsort(R, kind='stable')
ix = ix.transpose()
A=ix[0:k,:].transpose()
return A
我的样本数据如下:
x y
0 0
0 0.5
0 1
0.5 0
0.5 0.5
0.5 1
1 0
1 0.5
1 1
我也尝试过 scipy.spatial.KDTree 中的函数,但没有得到好的结果。任何帮助,将不胜感激。
【问题讨论】:
标签: python-3.x performance numpy scipy scipy-spatial