@@ -111,19 +111,16 @@ def _radius_sp_kdtree(features, radius, metric, order):
111111def _radius_sp_ckdtree (features , radius , metric , order ):
112112 p = order if metric == 'minkowski' else _metrics ['scipy-ckdtree' ][metric ]
113113 n_vertices , _ = features .shape
114- kdt = spatial .cKDTree (features )
115- nn = kdt .query_ball_point (features , r = radius , p = p , n_jobs = - 1 )
116- D = []
117- NN = []
118- for k in range (n_vertices ):
119- x = np .tile (features [k , :], (len (nn [k ]), 1 ))
120- d = np .linalg .norm (x - features [nn [k ], :],
121- ord = _metrics ['scipy-ckdtree' ][metric ],
122- axis = 1 )
123- nidx = d .argsort ()
124- NN .append (np .take (nn [k ], nidx ))
125- D .append (np .sort (d ))
126- return NN , D
114+ tree = spatial .cKDTree (features )
115+ D , NN = tree .query (features , k = n_vertices , distance_upper_bound = radius ,
116+ p = p , n_jobs = - 1 )
117+ distances = []
118+ neighbors = []
119+ for d , n in zip (D , NN ):
120+ mask = (d != np .inf )
121+ distances .append (d [mask ])
122+ neighbors .append (n [mask ])
123+ return neighbors , distances
127124
128125
129126def _knn_sp_pdist (features , num_neighbors , metric , order ):
0 commit comments