Networkx二分图:不同集合的节点数相同
Networkx bipartite graphs: nodes of different sets with the same number
我在使用 Networkx 构建二分图时遇到了一个主要问题。
我从 2 列 csv 中获取节点,比如
CODINV2;APPLN_ID
1;3
1;4
1;5
2;3
2;6
3;6
4;12
将每一列移动到单独的列表后,存储节点的代码是
G=nx.Graph()
G.add_nodes_from(codinv, bipartite=0)
G.add_nodes_from(app_id, bipartite=1)
然后我添加边缘(基于 csv 行):
for index,row in appl.iterrows():
G.add_edge(row['APPLN_ID'], row['CODINV2'])
现在确实创建了链接,但是如果我再次查看节点属性,现在很多都被错误地认为是
bipartite=1
基本上,如果属于不同集合的两个节点具有相同的编号,似乎会出现很多混乱,尤其是在假设的单模投影方面。
这样做的原因是图形按名称存储节点。
如果它按名称 3
输入一个节点并认为 bipartite=1
,然后稍后再次添加 3
,它会将其解释为同一节点。如果这次你告诉它bipartite=0
,它会覆盖旧条目。所以现在,节点 3
有 bipartite=0
.
如果要存储两个不同的节点3
,那么它们必须有不同的名称。您可以尝试将其用作字符串:'3a'
和 '3b'
。或任何其他名称,但 3
和 3
将不起作用。
我在使用 Networkx 构建二分图时遇到了一个主要问题。
我从 2 列 csv 中获取节点,比如
CODINV2;APPLN_ID
1;3
1;4
1;5
2;3
2;6
3;6
4;12
将每一列移动到单独的列表后,存储节点的代码是
G=nx.Graph()
G.add_nodes_from(codinv, bipartite=0)
G.add_nodes_from(app_id, bipartite=1)
然后我添加边缘(基于 csv 行):
for index,row in appl.iterrows():
G.add_edge(row['APPLN_ID'], row['CODINV2'])
现在确实创建了链接,但是如果我再次查看节点属性,现在很多都被错误地认为是
bipartite=1
基本上,如果属于不同集合的两个节点具有相同的编号,似乎会出现很多混乱,尤其是在假设的单模投影方面。
这样做的原因是图形按名称存储节点。
如果它按名称 3
输入一个节点并认为 bipartite=1
,然后稍后再次添加 3
,它会将其解释为同一节点。如果这次你告诉它bipartite=0
,它会覆盖旧条目。所以现在,节点 3
有 bipartite=0
.
如果要存储两个不同的节点3
,那么它们必须有不同的名称。您可以尝试将其用作字符串:'3a'
和 '3b'
。或任何其他名称,但 3
和 3
将不起作用。