在 scipy kdtree 中插入对象?

Inserting objects in scipy kdtree?

我正在尝试通过 scipy 的 KD_tree class 由对象而不是纯坐标构建的 kd 树。对象有一个 (x,y) 元组,树是基于此的,但我想 包括对象本身作为 node/in 节点。

对此有一些“简单”的方法吗? 看了一下 scipy kdtree with meta data,表示使用第三维作为对象指针(?)。然后树不会将这个值应用于邻居的比较吗? 我也和这位先生在同一条船上,创建我自己的 kd-tree 现在可以跳过。

PS。这是我的第一个 post,所以对我温柔一点 ;)

API of scipy's KdTree 需要一个二维坐标数组作为输入,而不是任何类型的对象数组。在这个数组中,行是点,列是这些点的坐标。

在你link的问题中,他的意思不是说有第三维,而是说有第三个指标。假设您正在寻找一个最近的邻居并且您 query 使用某个点,该函数将 return 一个距离和一个索引。索引是对用于构建树的数组的引用。距离是您的查询点和树点之间的距离差。

所以要使用这棵树,您可以保留两个数组。一个是对象坐标,另一个是对象。它们的顺序应该相同,这样当查询 return 是一个索引时,它们在两个数组中的含义相同。

PS。这是我的第一个回答,所以也温柔 :D