Python KD树给出了与蛮力法不同的结果

Python KD树给出了与蛮力法不同的结果,python,numpy,scipy,kdtree,Python,Numpy,Scipy,Kdtree,我有一个1000个随机3D点的数组&我对任何给定点最近的10个点感兴趣 我检查了J.F.Sebastian提供的两种解决方案,即蛮力方法和KD树方法 虽然这两种方法对最近的点给出了相同的指数,但对距离给出了不同的结果 import numpy as np from scipy.spatial import KDTree a = 100 * np.random.rand(1000,3) point = a[np.random.randint(0, 1001)] # point chosen at

我有一个1000个随机3D点的数组&我对任何给定点最近的10个点感兴趣

我检查了J.F.Sebastian提供的两种解决方案,即蛮力方法和KD树方法

虽然这两种方法对最近的点给出了相同的指数,但对距离给出了不同的结果

import numpy as np
from scipy.spatial import KDTree

a = 100 * np.random.rand(1000,3)
point = a[np.random.randint(0, 1001)] # point chosen at random

# KD Tree
tree = KDTree(a, leafsize=a.shape[0]+1)
dist_kd, ndx_kd = tree.query([point], k=10)

# Brute force
distances = ((a-point)**2).sum(axis=1)  # compute distances
ndx = distances.argsort() # indirect sort 
ndx_brt = ndx[:10]
dist_brt = distances[ndx[:10]]

# Output
print 'KD Tree:'
print ndx_kd
print dist_kd
print
print 'Brute force:'
print ndx_brt
print dist_brt
我的产出

KD树: [[838 860 595 684 554 396 793 197 652 330]] [[ 0. 3.00931208 8.30596471 9.47709122 10.98784209 11.39555636 11.89088764 12.01566931 12.551557 12.77700426]]

暴力: [838 860 595 684 554 396 793 197 652 330]
[ 0. 9.05595922 68.9890498 89.81525793 120.73267386 129.8587047 141.3932089 144.3763088157.5415830163.25183793]


那么这里的问题是什么?我计算的距离有误吗?

KDTree
算法是根据
蛮力算法使用的相同距离的平方根计算最近点

基本上KDtree使用:
sqrt(x^2+y^2+z^2)

蛮力算法使用:
x^2+y^2+z^2
KDTree
算法基于蛮力算法使用的相同距离的平方根计算最近点

基本上KDtree使用:
sqrt(x^2+y^2+z^2)

暴力算法使用:
x^2+y^2+z^2
距离=((a点)**2)。求和(轴=1)**0.5

距离=((a点)**2。求和(轴=1)**0.5

sqrt(163.25183793)=12.77700426oh yeah duhh。如果你把它作为一个答案,我会给你点Sqrt(163.25183793)=12.77700426哦,是的,是的。如果你把它作为一个答案,我会给你分数