所以,我有两个a
形状为 (p,2) 和b
形状为 (q,2) 的 numpy 数组。我用 scipy 创建了一个 KDTree
c=sp.KDTree(a)
我有一个上限,ub=1.0/12.0
当我这样做的时候
print c.query(b,distance_upper_bound=ub)
我明白([inf,inf,inf...],[len(a),len(a),len(a)...])
这意味着a
并且b
没有共同的元素。为了确认这一点,我做了一个 for 循环
for n in range(len(c.data)):#the result is the same with len(a)
for m in range(len(b)):
if (c.data[m][0]-b[n][0])**2.0+(c.data[m][1]-b[n][1])**2.0<ub**2.0:
print c.data[m],b[n],n,m
许多n,m
双被打印出来。
我已经使数组a
和b
数组通用,因为它发生在不同的数组中。
对我来说最神秘的是,在相同的代码中,我使用过query
并且得到了很好的结果。
那么,你能指出我正确的方向吗?
编辑:根据要求,样本数据。这些是for
循环打印的一些数据点。完整的数组真的很长。
a=np.array([[276.95368542701721, 330.18454774620238],
[276.95368542701721, 330.18454774620238],
[283.19923346114763, 337.60512985013065],
[270.32420807690886, 331.46587512659323],
[271.32525610216351, 333.51103014735435],
[271.9742523815284, 330.26777673087207],
[268.89584462538102, 331.5474437183201],
[278.6808380388178, 331.92691700030088],
[271.36541507290735, 332.74113908742231]])
b=np.array([[ 276.956177, 330.183134],
[ 276.956177, 330.183134],
[ 283.264282, 337.592966],
[ 270.319366, 331.538029],
[ 271.351807, 333.578056],
[ 272.019257, 330.268417],
[ 268.913958, 331.523153],
[ 278.681976, 331.927687],
[ 271.303917, 332.706767]])