NetworkX Graph 中所有节点之间的边
Edge between all nodes in NetworkX Graph
我可以在任何两个单独的节点之间添加边,如下所示:
G.add_edge(node1, node)
但是如果我想在任何两个节点之间做边缘(所有节点应该彼此相邻),当采用大量节点时就变得困难了。
示例:
如果节点数是 4,它们是 1,2,3,4.The 图应该是这样的
对于上图,我添加的节点如下:
graph = [(1, 2),(1, 3),(1, 4), (2, 3),(2, 4), (3, 4)]
for edge in graph:
G.add_edge(edge[0], edge[1])
Graph 构造中是否有任何默认选项作为我的要求的参数?
基本上我需要为给定的节点构建一个集团。
谢谢
根据你的描述,我认为你正在尝试制作一个完整的图表。 Networkx 有一个内置的方法来创建一个完整的图。
import networkx as nx
G=nx.complete_graph(4)
G.edges()
>[(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)]
如果您不想将节点命名为0,1,2,3
,那么您可以将G
中的节点重命名为其他名称。按照上面的命令:
nodenames = ['a', 'b', 'c', 'd']
mapping = {i:nodename for i,nodename in enumerate(nodenames)}
#now mapping looks like {0:'a', 1:'b', ...}
H=nx.relabel_nodes(G,mapping)
H.edges()
> [('a', 'c'), ('a', 'b'), ('a', 'd'), ('c', 'b'), ('c', 'd'), ('b', 'd')]
(注意 - 我不喜欢我用来定义的字典理解 mapping
- 如果有人能给我一个不需要枚举的更直接的版本,我将不胜感激)。
我可以在任何两个单独的节点之间添加边,如下所示:
G.add_edge(node1, node)
但是如果我想在任何两个节点之间做边缘(所有节点应该彼此相邻),当采用大量节点时就变得困难了。
示例:
如果节点数是 4,它们是 1,2,3,4.The 图应该是这样的
对于上图,我添加的节点如下:
graph = [(1, 2),(1, 3),(1, 4), (2, 3),(2, 4), (3, 4)]
for edge in graph:
G.add_edge(edge[0], edge[1])
Graph 构造中是否有任何默认选项作为我的要求的参数?
基本上我需要为给定的节点构建一个集团。
谢谢
根据你的描述,我认为你正在尝试制作一个完整的图表。 Networkx 有一个内置的方法来创建一个完整的图。
import networkx as nx
G=nx.complete_graph(4)
G.edges()
>[(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)]
如果您不想将节点命名为0,1,2,3
,那么您可以将G
中的节点重命名为其他名称。按照上面的命令:
nodenames = ['a', 'b', 'c', 'd']
mapping = {i:nodename for i,nodename in enumerate(nodenames)}
#now mapping looks like {0:'a', 1:'b', ...}
H=nx.relabel_nodes(G,mapping)
H.edges()
> [('a', 'c'), ('a', 'b'), ('a', 'd'), ('c', 'b'), ('c', 'd'), ('b', 'd')]
(注意 - 我不喜欢我用来定义的字典理解 mapping
- 如果有人能给我一个不需要枚举的更直接的版本,我将不胜感激)。