gpt4 book ai didi

python - 在 Networkx MultiDigraph 的嵌套列表中加入节点

转载 作者:太空宇宙 更新时间:2023-11-04 01:18:29 24 4
gpt4 key购买 nike

我在 networkx MultiDigraph 中有多个等长且彼此平行的线图,我如何遍历这些图并将边添加到具有边的相对节点(注意,节点在嵌套列表中)即连接 2 & 2a、3 和 3a 等

nodes1 = [[2,5,7,8,9,10],[3,15,37,58,69,10]]
nodes2 = [['2a','5a','7a','8a','9a','10a'],['3a','15a','37a','58a','69a','10a']]
                              BEFORE
2---------3---------4----------5----------6



2a---------3a-------4a--------5a---------6a


AFTER
2---------3---------4----------5----------6
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
2a--------3a--------4a----------5a--------6a

最佳答案

假设列表和子列表的长度匹配,那么你可以这样做:

In [33]:

import networkx as nx
nodes1 = [[2,5,7,8,9,10],[3,15,37,58,69,10]]
nodes2 = [['2a','5a','7a','8a','9a','10a'],['3a','15a','37a','58a','69a','10a']]

In [47]:
# build an edge list
edge_list = []
# iterate over the length of the lists, access each list and zip them
for i in range(len(nodes1)):
edge_list = edge_list + (list(tuple(zip(nodes1[i], nodes2[i]))))
# now add the opposite direction
edge_list = edge_list + (list(tuple(zip(nodes2[i], nodes1[i]))))
edge_list
0
1
Out[47]:
[(2, '2a'),
(5, '5a'),
(7, '7a'),
(8, '8a'),
(9, '9a'),
(10, '10a'),
('2a', 2),
('5a', 5),
('7a', 7),
('8a', 8),
('9a', 9),
('10a', 10),
(3, '3a'),
(15, '15a'),
(37, '37a'),
(58, '58a'),
(69, '69a'),
(10, '10a'),
('3a', 3),
('15a', 15),
('37a', 37),
('58a', 58),
('69a', 69),
('10a', 10)]
In [48]:

G = nx.DiGraph()
G.add_edges_from(edge_list)
G.edges()
Out[48]:
[(2, '2a'),
(3, '3a'),
(5, '5a'),
(7, '7a'),
(8, '8a'),
(9, '9a'),
(10, '10a'),
(15, '15a'),
('5a', 5),
('69a', 69),
('2a', 2),
(69, '69a'),
('7a', 7),
(37, '37a'),
('8a', 8),
('9a', 9),
('10a', 10),
('15a', 15),
('58a', 58),
('37a', 37),
(58, '58a'),
('3a', 3)]

In [49]:

nx.draw(G)

enter image description here

关于python - 在 Networkx MultiDigraph 的嵌套列表中加入节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22782647/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com