scipy.spatial.cKDTree.query¶

cKDTree.
query
(self, x, k=1, eps=0, p=2, distance_upper_bound=np.inf, n_jobs=1)¶ Query the kdtree for nearest neighbors
Parameters: x : array_like, last dimension self.m
An array of points to query.
k : list of integer or integer
The list of kth nearest neighbors to return. If k is an integer it is treated as a list of [1, ... k] (range(1, k+1)). Note that the counting starts from 1.
eps : nonnegative float
Return approximate nearest neighbors; the kth returned value is guaranteed to be no further than (1+eps) times the distance to the real kth nearest neighbor.
p : float, 1<=p<=infinity
Which Minkowski pnorm to use. 1 is the sumofabsolutevalues “Manhattan” distance 2 is the usual Euclidean distance infinity is the maximumcoordinatedifference distance
distance_upper_bound : nonnegative float
Return only neighbors within this distance. This is used to prune tree searches, so if you are doing a series of nearestneighbor queries, it may help to supply the distance to the nearest neighbor of the most recent point.
n_jobs : int, optional
Number of jobs to schedule for parallel processing. If 1 is given all processors are used. Default: 1.
Returns: d : array of floats
The distances to the nearest neighbors. If
x
has shapetuple+(self.m,)
, thend
has shapetuple+(k,)
. When k == 1, the last dimension of the output is squeezed. Missing neighbors are indicated with infinite distances.i : ndarray of ints
The locations of the neighbors in
self.data
. Ifx
has shapetuple+(self.m,)
, theni
has shapetuple+(k,)
. When k == 1, the last dimension of the output is squeezed. Missing neighbors are indicated withself.n
.Notes
If the KDTree is periodic, the position
x
is wrapped into the box.When the input k is a list, a query for arange(max(k)) is performed, but only columns that store the requested values of k are preserved. This is implemented in a manner that reduces memory usage.
Examples
>>> tree = cKDTree(data)
To query the nearest neighbours and return squeezed result, use
>>> dd, ii = tree.query(x, k=1)
To query the nearest neighbours and return unsqueezed result, use
>>> dd, ii = tree.query(x, k=[1])
To query the second nearest neighbours and return unsqueezed result, use
>>> dd, ii = tree.query(x, k=[2])
To query the first and second nearest neighbours, use
>>> dd, ii = tree.query(x, k=2)
or, be more specific
>>> dd, ii = tree.query(x, k=[1, 2])