我正在将一个图表投影到其中一个节点集上,但结果投影的节点数比原始节点集多,奇怪的是,这个“额外”节点只是一个与G中节点ID对应的数字,而不是完整的(节点,数据)元组。
C=set(n for n,d in G.nodes(data=True) if d['bipartite']==0)
len(C)
>>109813
BC=bipartite.projected_graph(G,C)
len(BC)
>>112570
len(BC)-len(C)
>>2757
BC处的所有“额外”节点只是一个数字(对应于G中的节点ID)。这些'额外'2757节点来自哪里?我希望二分投影图具有与投影到的节点集中的节点数相同的节点数。有什么想法吗?
可能的额外有用信息:
len(G)
>>117679
答案 0 :(得分:0)
对于您的节点集,您的图表可能不是二分图, e.g。
In [1]: import networkx as nx
In [2]: from networkx import bipartite
In [3]: G = nx.path_graph(5) # two parts, [0,2,4],[1,3]
In [4]: bipartite.projected_graph(G,[0,2,4]).nodes()
Out[4]: [0, 2, 4] # OK
In [5]: bipartite.projected_graph(G,[0,2,3]).nodes()
Out[5]: [0, 1, 2, 3, 4] # maybe not expected or correct
这可能被视为一个错误,但文档确实警告在进行投影之前不会进行二分检查。