scipy.spatial.cKDTree.

запрос#

cKDTree.запрос(self, x, k=1, eps=0, p=2, distance_upper_bound=np.inf, workers=1)#

Запрос kd-дерева на ближайших соседей

Параметры:
xarray_like, последнее измерение self.m

Массив точек для запроса.

kсписок целых чисел или целое число

Список k-х ближайших соседей для возврата. Если k - целое число, оно обрабатывается как список [1, … k] (range(1, k+1)). Обратите внимание, что отсчет начинается с 1.

epsнеотрицательное число с плавающей точкой

Возвращает приближенных ближайших соседей; k-е возвращаемое значение гарантированно не дальше, чем (1+eps) раз расстояние до реального k-го ближайшего соседа.

pfloat, 1<=p<=infinity

Какую Minkowski p-норму использовать. 1 - это расстояние «Манхэттен» (сумма абсолютных значений) 2 - обычное евклидово расстояние бесконечность - расстояние максимальной разности координат Конечное большое p может вызвать ValueError при возможном переполнении.

distance_upper_boundнеотрицательное число с плавающей точкой

Возвращать только соседей в пределах этого расстояния. Это используется для обрезки поиска по дереву, поэтому если вы выполняете серию запросов ближайших соседей, может помочь указать расстояние до ближайшего соседа последней точки.

workersint, необязательный

Количество рабочих процессов для параллельной обработки. Если задано -1, используются все потоки CPU. По умолчанию: 1.

Изменено в версии 1.9.0: Аргумент "n_jobs" был переименован в "workers". Старое имя "n_jobs" было объявлено устаревшим в SciPy 1.6.0 и удалено в SciPy 1.9.0.

Возвращает:
dмассив чисел с плавающей точкой

Расстояния до ближайших соседей. Если x имеет форму tuple+(self.m,), затем d имеет форму tuple+(k,). Когда k == 1, последнее измерение вывода сжимается. Отсутствующие соседи обозначаются бесконечными расстояниями.

indarray целых чисел

Индекс каждого соседа в self.data. Если x имеет форму tuple+(self.m,), затем i имеет форму tuple+(k,). Когда k == 1, последнее измерение вывода сжимается. Отсутствующие соседи обозначаются self.n.

Примечания

Если KD-дерево периодическое, позиция x заключен в рамку.

Когда входной параметр k является списком, выполняется запрос для arange(max(k)), но сохраняются только столбцы, хранящие запрошенные значения k. Это реализовано таким образом, чтобы уменьшить использование памяти.

Примеры

>>> import numpy as np
>>> from scipy.spatial import cKDTree
>>> x, y = np.mgrid[0:5, 2:8]
>>> tree = cKDTree(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]]