微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我需要得到图中演员节点的度数与演员节点的总和这个图是二部图,它有演员和电影节点

如何解决我需要得到图中演员节点的度数与演员节点的总和这个图是二部图,它有演员和电影节点

我的图表代码片段

import networkx as nx
from networkx.algorithms import bipartite
graded_graph= nx.Graph()
graded_graph.add_nodes_from(['a1','a5','a10','a11'],bipartite=0) 
graded_graph.add_nodes_from(['m1','m2','m4','m6','m5','m8'],bipartite=1)
graded_graph.add_edges_from([('a1','m1'),('a1','m2'),'m4'),('a11','m6'),('a5','m5'),('a10','m8')])
l={'a1','a11'};r={'m1','m8'}
pos = {}
pos.update((node,(1,index)) for index,node in enumerate(l))
pos.update((node,(2,node in enumerate(r))
nx.draw_networkx(graded_graph,pos=pos,with_labels=True,node_color='lightblue',alpha=0.8,style='dotted',node_size=500)

现在我想分别获得演员节点和电影节点的度数总和。如果我使用graded_graph.degrees()。我得到的输出是演员和电影节点的度数列表。我怎样才能把它们分开?

另外,我如何获得电影节点和演员节点的唯一节点?

解决方法

import networkx as nx
from networkx.algorithms import bipartite
graded_graph= nx.Graph()
graded_graph.add_nodes_from(['actor_1','actor_5','actor_10','actor_11'],bipartite=0) 
graded_graph.add_nodes_from(['mov_1','mov_2','mov_4','mov_6','mov_5','mov_8'],bipartite=1)
graded_graph.add_edges_from([('actor_1','mov_1'),('actor_1','mov_2'),'mov_4'),('actor_11','mov_6'),('actor_5','mov_5'),('actor_10','mov_8')])


gd=graded_graph.to_directed()
dfDegree=pd.DataFrame([{'name':v[0][0],'degree':v[0][1],'type':v[0][0].split('_')[0]} 
                       for v in list(zip(gd.degree)) ])
dfDegreeActor=dfDegree.query('type=="actor"')
dfDegreeMov=dfDegree.query('type=="mov"')
print(dfDegreeActor)
print(dfDegreeMov)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。