query_pairs#
- cKDTree.query_pairs(self, r, p=2., eps=0, output_type='set')#
Найти все пары точек в self расстояние до которого не превышает r.
- Параметры:
- rположительное число с плавающей точкой
Максимальное расстояние.
- pfloat, опционально
Какую норму Минковского использовать.
pдолжно удовлетворять условию1 <= p <= infinity. Конечное большое p может вызвать ValueError, если может произойти переполнение.- epsfloat, опционально
Приближённый поиск. Ветви дерева не исследуются, если их ближайшие точки находятся дальше, чем
r/(1+eps), и ветви добавляются массово, если их самые дальние точки ближе, чемr * (1+eps). eps должно быть неотрицательным.- output_typestring, optional
Выберите контейнер вывода, 'set' или 'ndarray'. По умолчанию: 'set'
- Возвращает:
- FeatureHasher на частотных словаряхмножество или ndarray
Набор пар
(i,j), сi < j, для которых соответствующие позиции близки. Если output_type — 'ndarray', возвращается ndarray вместо множества.
Примеры
Вы можете искать все пары точек в kd-дереве в пределах расстояния:
>>> import matplotlib.pyplot as plt >>> import numpy as np >>> from scipy.spatial import cKDTree >>> rng = np.random.default_rng() >>> points = rng.random((20, 2)) >>> plt.figure(figsize=(6, 6)) >>> plt.plot(points[:, 0], points[:, 1], "xk", markersize=14) >>> kd_tree = cKDTree(points) >>> pairs = kd_tree.query_pairs(r=0.2) >>> for (i, j) in pairs: ... plt.plot([points[i, 0], points[j, 0]], ... [points[i, 1], points[j, 1]], "-r") >>> plt.show()