【发布时间】:2016-05-10 22:17:06
【问题描述】:
我有几个点,想确定它们之间是否有特定的距离。如果是,我想将它们合并为一个点。我建立了一个搜索树并从中得到了一个距离矩阵。是否有一种优雅的(如果可能的话不使用慢循环)方法来确定哪些点在特定距离内,而不使用一些复杂的聚类算法(kmeans、分层等)?
import numpy as np
from sklearn.neighbors import NearestNeighbors
from sklearn.neighbors import radius_neighbors_graph
RADIUS = 0.025
points = np.array([
[13.2043373032, 52.3818529896],
[13.0530692845, 52.3991668707],
[13.229309674, 52.3840231],
[13.489018081, 52.4180538095],
[13.3209738098, 52.6375963146],
[13.0160362703, 52.4187139243],
[13.0448485, 52.4143229343],
[13.32478977, 52.5090253],
[13.35514839, 52.5219323867],
[13.1982523828, 52.3592620828]
])
tree = NearestNeighbors(n_neighbors=2, radius=RADIUS, leaf_size=30, algorithm="auto", n_jobs=1).fit(points)
nnGraph = radius_neighbors_graph(tree, RADIUS, mode='distance', include_self=False)
print nnGraph
(0, 9) 0.0233960536484
(1, 6) 0.0172420289306
(6, 1) 0.0172420289306
(9, 0) 0.0233960536484
【问题讨论】:
标签: arrays numpy vectorization distance