scipy.spatial.cKDTree.

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()
../../_images/scipy-spatial-cKDTree-query_pairs-1.png