假设我有和数组,其中第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]
这些单位是什么?他们还是原来的脚,脚,和秒?
答案 0 :(得分:2)
当测量是单位不能相互转换的事物(例如时间和距离)时,它不会返回任何可解释单位。它返回sqrt(feet**2 + feet**2 + sec**2)
,这不是一个度量单位。它是欧几里德范数,但在这种情况下是抽象空间。
顺便说一下,这不是一个真正的Python问题。 scipy只是操纵你给它的数字并且不知道单位。这是一个如何解释数学的问题,例如,如果你想要一个5' x 5'盒子越近越近'到7' x 7'盒子比6' x 6'因为你碰巧在几秒钟之内测量它们并且在第三个小时后测量它们。只有您知道您的数据以及构建相似性得分的真正重要性。在我刚刚给出的案例中,它没有意义。如果您根据身体尺寸和最佳100米时间对短跑运动员的相似性进行排序,那么它可能是有道理的。