scipy.spatial.KDTree.

запрос#

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]]