Python:如何创建包含距某个点的欧氏距离的列表字典?
Python: how do I create a dict of lists containing the euclidean distances from a point?
假设我有一个具有给定坐标集的规则点网格,如下所示:
Node IDs Coordinates
0 1 2 (0,0) (1,0) (2,0)
3 4 5 (0,1) (1,1) (2,1)
6 7 8 (0,2) (1,2) (2,2)
就我而言,常规网格是使用 NetworkX 生成的 2D graph
。
如何创建一个 dict
列表,其中键表示网络中的每个节点 ID,列表包含从一个特定节点到与其连接的节点的距离?
示例: 节点 (0,0)
连接到节点 (1,0)
和 (0,1)
。考虑到平方距离以避免 sqrt
的计算成本,我想要的字典将以 mydict={0:[1,1],...]
为特征,因为从节点 (0,0)
到其连接的邻居的平方距离在两种情况下都是 1. 每个因此,列表只要每个节点都有邻居。
我没能提供一些代码,因为我不明白如何解决这个问题。非常感谢那些愿意提供帮助的人。
编辑
常规网络是这样创建的:
import networkx as nx
N=3
G=nx.grid_2d_graph(N,N)
pos = dict( (n, n) for n in G.nodes() )
labels = dict( ((i, j), i + (N-1-j) * N ) for i, j in G.nodes() )
nx.relabel_nodes(G,labels,False)
inds=labels.keys()
vals=labels.values()
inds.sort()
vals.sort()
pos2=dict(zip(vals,inds))
nx.draw_networkx(G, pos=pos2, with_labels=False, node_size = 15)
这是获取每个节点的邻居的方法:
for node in G.nodes():
list_of_neigh=G.neighbors(node) #The connected neighbors of node n
这是访问图中每个节点的方式:
G.nodes()
假设节点是元组 (a,b),像这样(未测试)? :
def dist(n1, n2):
x = n2[0]-n1[0]
y = n2[1]-n1[1]
return math.sqrt(x*x + y*y) # or math.hypot(x, y)
distances = {}
for node in G.nodes():
list_of_neigh = G.neighbors(node)
distances[node] = [dist(node, x) for x in list_of_neigh]
假设我有一个具有给定坐标集的规则点网格,如下所示:
Node IDs Coordinates
0 1 2 (0,0) (1,0) (2,0)
3 4 5 (0,1) (1,1) (2,1)
6 7 8 (0,2) (1,2) (2,2)
就我而言,常规网格是使用 NetworkX 生成的 2D graph
。
如何创建一个 dict
列表,其中键表示网络中的每个节点 ID,列表包含从一个特定节点到与其连接的节点的距离?
示例: 节点 (0,0)
连接到节点 (1,0)
和 (0,1)
。考虑到平方距离以避免 sqrt
的计算成本,我想要的字典将以 mydict={0:[1,1],...]
为特征,因为从节点 (0,0)
到其连接的邻居的平方距离在两种情况下都是 1. 每个因此,列表只要每个节点都有邻居。
我没能提供一些代码,因为我不明白如何解决这个问题。非常感谢那些愿意提供帮助的人。
编辑
常规网络是这样创建的:
import networkx as nx
N=3
G=nx.grid_2d_graph(N,N)
pos = dict( (n, n) for n in G.nodes() )
labels = dict( ((i, j), i + (N-1-j) * N ) for i, j in G.nodes() )
nx.relabel_nodes(G,labels,False)
inds=labels.keys()
vals=labels.values()
inds.sort()
vals.sort()
pos2=dict(zip(vals,inds))
nx.draw_networkx(G, pos=pos2, with_labels=False, node_size = 15)
这是获取每个节点的邻居的方法:
for node in G.nodes():
list_of_neigh=G.neighbors(node) #The connected neighbors of node n
这是访问图中每个节点的方式:
G.nodes()
假设节点是元组 (a,b),像这样(未测试)? :
def dist(n1, n2):
x = n2[0]-n1[0]
y = n2[1]-n1[1]
return math.sqrt(x*x + y*y) # or math.hypot(x, y)
distances = {}
for node in G.nodes():
list_of_neigh = G.neighbors(node)
distances[node] = [dist(node, x) for x in list_of_neigh]