例如,假设我已经从二维数组中的点创建了一个kdtree。然后我对某个点(表示为x-y坐标对)运行最近邻查询,要求找到该点的8个最近邻居。这将返回两个列表:(1)给定点的邻居的8个距离列表,以及(2)这些邻居的树索引列表。
现在假设我想取其中一个树索引,并获取该点的x-y坐标?我该怎么做呢?
现在假设我想取其中一个树索引,并获取该点的x-y坐标?我该怎么做呢?
请注意,此处有一个包含树坐标的data
属性:https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.cKDTree.html
因此,您可以通过以下方式获取您的坐标:
tree.data[index]
这是一个完整的示例:
import numpy as np
from scipy.spatial import KDTree
pts = np.array([(1, 1), (2, 1), (3, 1), (4, 1), (1, 2), (2, 2), (3, 2), (4, 2), (1, 3), (2, 3), (3, 3), (4, 3), (1, 4), (2, 4), (3, 4), (4, 4)])
# Build tree
tree = KDTree(pts)
# Query tree for points within distance=2 of (1,1)
idx = tree.query_ball_point([1,1],r=2)
print(idx)
[0, 4, 8, 1, 5, 2]
然后获取这些索引的坐标,
# Get coordinates of the indices
print(tree.data[idx])
[[1. 1.]
[1. 2.]
[1. 3.]
[2. 1.]
[2. 2.]
[3. 1.]]