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()