#### Previous topic

scipy.spatial.cKDTree.count_neighbors

#### Next topic

scipy.spatial.cKDTree.query_ball_point

# scipy.spatial.cKDTree.query

`cKDTree.``query`(self, x, k=1, eps=0, p=2, distance_upper_bound=np.inf, n_jobs=1)

  Query the kd-tree 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 k-th 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 : non-negative float Return approximate nearest neighbors; the k-th returned value is guaranteed to be no further than (1+eps) times the distance to the real k-th nearest neighbor. p : float, 1<=p<=infinity Which Minkowski p-norm to use. 1 is the sum-of-absolute-values “Manhattan” distance 2 is the usual Euclidean distance infinity is the maximum-coordinate-difference 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 nearest-neighbor 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 shape `tuple+(self.m,)`, then `d` has shape `tuple+(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`. If `x` has shape `tuple+(self.m,)`, then `i` has shape `tuple+(k,)`. When k == 1, the last dimension of the output is squeezed. Missing neighbors are indicated with `self.n`.

  Notes

  If the KD-Tree 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])