Python networkx用欧氏距离阈值构造图

Python networkx用欧氏距离阈值构造图,python,graph,networkx,Python,Graph,Networkx,当给定节点时,我想通过欧几里德阈值边构造一个几何图 比如说, 给定的节点位于2D地图上 x1(1,0) x2(3,4) x5(5,6) 然后当我设置欧几里德距离阈值,比如5, 图表将如下所示 x1-x2-x5。由于x1和x5大于5,因此不允许连接 如何使用networkx或其他库方便地执行此操作?您可以使用kd树,特别是您可能希望使用(用于快速最近邻查找的kd树) 通常,kd树(k维树的缩写)是一种空间分区数据结构,用于在k维空间中组织点。它们有助于在空间中找到离给定输入点最近的点 from n

当给定节点时,我想通过欧几里德阈值边构造一个几何图

比如说,

给定的节点位于2D地图上

x1(1,0) x2(3,4) x5(5,6)

然后当我设置欧几里德距离阈值,比如5, 图表将如下所示 x1-x2-x5。由于x1和x5大于5,因此不允许连接


如何使用networkx或其他库方便地执行此操作?

您可以使用kd树,特别是您可能希望使用(用于快速最近邻查找的kd树)

通常,kd树(k维树的缩写)是一种空间分区数据结构,用于在k维空间中组织点。它们有助于在空间中找到离给定输入点最近的点

from networkx import Graph
from scipy.spatial import cKDTree

# your data and parameters
points = [(1, 0), (3, 4), (5, 6)]
dist = 5

# build KDTree
tree = cKDTree(points)

# build graph
G = Graph()
G.add_nodes_from(points)
G.add_edges_from((point, points[idx2])
                 for idx1, point in enumerate(points)
                 for idx2 in tree.query_ball_point(point, dist)
                 if idx1 != idx2)