2016-04-22 8 views
0

Skipy cKDTreeを使用して遠方にある隣人を探したい。最も重要なのは、ポイント自体(距離ゼロ)も欲しいということです。 cKDTree。クエリーはすべてのネイバーを与えますが、距離はゼロです。Scipy cKDTree最近接のゼロを含む距離

これを行う方法はありますか?

おかげ

+0

あなたはあなたのコードの詳細を与えることができますし、どのようにあなたのツリーを照会していますか?私はあなたの問題を確認するにはわかりません。 'tree = cKDTree(ref_points)'のようなツリーを構築し、それを '_、idx = tree.query(other_points、k = 3)'のようなもので照会すると 'idx'変数は 'other_points '、これらのインデックスされたポイントの1つが照会されたポイントの同じ座標(すなわち、ゼロの距離)を有する場合を含む、'ref_points 'に最も近い3のID。 – mgc

+0

ご返信ありがとうございます。リスト[0,1,2,3,4,5,6,7,8,9]の中で、2の距離内にポイント[5]の隣人を見つけたいと思っています。cKDTreeは私にポイント[3、4、 6,7]。しかし、私は[3、4、5、6、7]が欲しいです。これは私の質問を明確にしますか? – RainisCold

答えて

0

私は本当にあなたの問題を再現することはできません(またはそれはあなたがツリーを照会するために使用されている方法に依存かもしれません)。返し

>>> idx = tree.query_ball_point((4, 4), 2) 
>>> points_ref[idx] 
# array([[3, 3], [4, 4], [5, 4]]) 

:ような何かを与えることができます

>>> from scipy.spatial import cKDTree 
>>> import numpy as np 

>>> points_ref = np.array([(1, 1), (3, 3), (4, 4), (5, 4), (6, 6)]) 
>>> tree = cKDTree(points_ref) 

方法cKDTree.query_ball_pointでポイント(4, 4)周り2の距離で最も近い隣人のために照会:このコードの簡単なスニペットを考慮

距離が0の点。

n-また、0の距離でポイントを返すように思わcKDTree.query方法と最寄り隣人:

>>> _, idx = tree.query((3, 3), k=2) 
>>> points_ref[idx] 
# array([[3, 3], [4, 4]]) 
+0

ありがとう、mgc。私は私の誤りを見つけました。そしてうん、それは働いています。 – RainisCold

関連する問題