scipy.spatial.cKDTree.

query_ball_point#

cKDTree.query_ball_point(self, x, r, p=2., eps=0, workers=1, return_sorted=None, return_length=False)#

Найти все точки в пределах расстояния r от точки(точек) x.

Параметры:
xarray_like, кортеж формы + (self.m,)

Точка или точки для поиска соседей.

rarray_like, float

Радиус точек для возврата, должен транслироваться на длину x.

pfloat, опционально

Какую норму Минковского p использовать. Должна быть в диапазоне [1, inf]. Конечное большое p может вызвать ValueError, если возможно переполнение.

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

Приближённый поиск. Ветви дерева не исследуются, если их ближайшие точки дальше, чем r / (1 + eps), и ветви добавляются группами, если их самые удаленные точки ближе, чем r * (1 + eps).

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

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

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

return_sortedbool, необязательно

Сортирует возвращаемые индексы, если True, и не сортирует их, если False. Если None, не сортирует запросы с одной точкой, но сортирует запросы с несколькими точками, что было поведением до добавления этой опции.

Добавлено в версии 1.2.0.

return_length: bool, optional

Возвращать количество точек внутри радиуса вместо списка индексов. .. versionadded:: 1.3.0

Возвращает:
FeatureHasher на частотных словаряхсписок или массив списков

Если x является единственной точкой, возвращает список индексов соседей x. Если x является массивом точек, возвращает объектный массив формы кортежа, содержащий списки соседей.

Примечания

Если у вас много точек, соседей которых нужно найти, вы можете сэкономить значительное время, поместив их в cKDTree и используя query_ball_tree.

Примеры

>>> import numpy as np
>>> from scipy import spatial
>>> x, y = np.mgrid[0:4, 0:4]
>>> points = np.c_[x.ravel(), y.ravel()]
>>> tree = spatial.cKDTree(points)
>>> tree.query_ball_point([2, 0], 1)
[4, 8, 9, 12]

Запросить несколько точек и построить результаты:

>>> import matplotlib.pyplot as plt
>>> points = np.asarray(points)
>>> plt.plot(points[:,0], points[:,1], '.')
>>> for results in tree.query_ball_point(([2, 0], [3, 3]), 1):
...     nearby_points = points[results]
...     plt.plot(nearby_points[:,0], nearby_points[:,1], 'o')
>>> plt.margins(0.1, 0.1)
>>> plt.show()
../../_images/scipy-spatial-cKDTree-query_ball_point-1.png