例如:
from scipy.spatial import KDTree
import numpy as np
data= np.random.rand(10,3) # 10 points in space
kdtree=KDTree(data)
dist,points=kdtree.query(data,4) # find nearest 4 points of each point(including themselves)
和
points
输出:
array([[0, 9, 6, 4],
[1, 7, 4, 3],
[2, 3, 8, 5],
[3, 7, 1, 2],
[4, 9, 1, 6],
[5, 8, 3, 2],
[6, 9, 0, 4],
[7, 1, 3, 4],
[8, 5, 0, 3],
[9, 6, 0, 4]])
全部正确。
point 0
(0,9),(0,6),(0,4)
point 9
,有
(9,0)
(0,9)
,相同
(0,6)
(6,0)
.
point j
被视为另一个邻居
point i
仅当其位于
第一点
.
KDtree
到相应的上半空间点,这对于具有多个点的大系统来说并不简单和快速。
那么,有没有一种简单的方法可以避免在使用时重复计算
kdtree
? 比如只在某个空间范围内寻找最近的邻居?