запрос#
- KDTree.запрос(x, k=1, eps=0, p=2, distance_upper_bound=inf, workers=1)[источник]#
Запросите kd-дерево для поиска ближайших соседей.
- Параметры:
- xarray_like, последнее измерение self.m
Массив точек для запроса.
- kint или Sequence[int], опционально
Либо количество ближайших соседей для возврата, либо список k-х ближайших соседей для возврата, начиная с 1.
- epsнеотрицательное число с плавающей точкой, опционально
Возвращает приближённых ближайших соседей; гарантируется, что k-е возвращаемое значение находится не дальше, чем в (1+eps) раз от расстояния до реального k-го ближайшего соседа.
- pfloat, 1<=p<=infinity, опционально
Какую норму Минковского p использовать. 1 — расстояние суммы абсолютных значений («манхэттенское» расстояние). 2 — обычное евклидово расстояние. infinity — расстояние максимальной разности координат. Большое конечное p может вызвать ValueError, если возможно переполнение.
- distance_upper_boundнеотрицательное число с плавающей точкой, опционально
Возвращать только соседей в пределах этого расстояния. Это используется для обрезки поисков по дереву, поэтому если вы выполняете серию запросов ближайших соседей, может помочь указать расстояние до ближайшего соседа последней точки.
- workersint, необязательный
Количество рабочих процессов для параллельной обработки. Если задано -1, используются все потоки CPU. По умолчанию: 1.
Добавлено в версии 1.6.0.
- Возвращает:
- dfloat или массив floats
Расстояния до ближайших соседей. Если
xимеет формуtuple+(self.m,), затемdимеет формуtuple+(k,). Когда k == 1, последнее измерение вывода сжимается. Отсутствующие соседи обозначаются бесконечными расстояниями. Попадания сортируются по расстоянию (сначала ближайшие).Изменено в версии 1.9.0: Ранее если
k=None, затем d был массивом объектов формыtuple, содержащий списки расстояний. Это поведение было удалено, используйтеquery_ball_pointвместо этого.- iцелое число или массив целых чисел
Индекс каждого соседа в
self.data.iимеет ту же форму, что и d. Отсутствующие соседи обозначаютсяself.n.
Примеры
>>> import numpy as np >>> from scipy.spatial import KDTree >>> x, y = np.mgrid[0:5, 2:8] >>> tree = KDTree(np.c_[x.ravel(), y.ravel()])
Для запроса ближайших соседей и возврата сжатого результата используйте
>>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=1) >>> print(dd, ii, sep='\n') [2. 0.2236068] [ 0 13]
Для запроса ближайших соседей и возврата несжатого результата используйте
>>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=[1]) >>> print(dd, ii, sep='\n') [[2. ] [0.2236068]] [[ 0] [13]]
Чтобы запросить вторых ближайших соседей и вернуть несжатый результат, используйте
>>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=[2]) >>> print(dd, ii, sep='\n') [[2.23606798] [0.80622577]] [[ 6] [19]]
Для запроса первого и второго ближайших соседей используйте
>>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=2) >>> print(dd, ii, sep='\n') [[2. 2.23606798] [0.2236068 0.80622577]] [[ 0 6] [13 19]]
или, будьте более конкретны
>>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=[1, 2]) >>> print(dd, ii, sep='\n') [[2. 2.23606798] [0.2236068 0.80622577]] [[ 0 6] [13 19]]