SciPy KDTree距离单位?

SciPy KDTree distance units?

假设我有一个数组,其中第 1 列以英尺为单位,第 2 列以英尺为单位,第 3 列以秒为单位。例如:

x = [50 40 30]

然后我有另一个数组,y,具有相同的单位和相同的列数,但有很多行。然后我用 Scipy:

把它变成一个 KDTree
tree = scipy.KDTree(y)

然后查询那棵树:

distance,index = tree.query(x,k=1)

默认情况下,我相信距离是根据欧氏范数计算的。

例如,distance 可能是:

print distance
[34]

这些是什么单位?还是原来的尺、尺、秒?

当测量的单位无法相互转换(例如时间和距离)时,它不会 return 任何可解释的单位。它是 returning sqrt(feet**2 + feet**2 + sec**2),这不是计量单位。这是欧几里德范数,但在这种情况下是抽象的 space。

顺便说一下,这并不是一个真正的 Python 问题。 scipy 只是在操纵你给它的数字,不知道单位。这更多的是如何解释数学的问题,例如,如果您想将 5' x 5' 的盒子视为 'closer' 到 7' x 7' 的盒子而不是 6' x 6' 的盒子,因为您碰巧在几秒钟内测量了它们,并在几小时后测量了第三个盒子。只有您知道您的数据以及哪些特征对构建相似性分数真正重要。就我刚才给出的情况来说,没有意义。如果您根据体型和最佳 100 米时间对短跑运动员的相似性进行排名,那么这可能是有道理的。