如何在NetworkX二分图中分别统计两类节点度之和及提取对应节点
解决方案
1. 单独提取演员、电影两类节点
你在构建图时已经给节点附加了bipartite属性标记分类,直接过滤节点属性即可获取对应类的唯一节点,不需要依赖提前定义的变量:
# 获取所有演员节点(bipartite属性为0) actor_nodes = [n for n, attr in graded_graph.nodes(data=True) if attr['bipartite'] == 0] # 获取所有电影节点(bipartite属性为1) movie_nodes = [n for n, attr in graded_graph.nodes(data=True) if attr['bipartite'] == 1]
打印验证即可得到和你之前定义的l、r完全一致的节点集合。
2. 分开统计两类节点的度总和
graded_graph.degree()支持传入指定节点列表作为参数,只会返回目标节点的度数据,直接求和即可:
# 统计演员节点度总和 total_actor_degree = sum(degree for node, degree in graded_graph.degree(actor_nodes)) # 统计电影节点度总和 total_movie_degree = sum(degree for node, degree in graded_graph.degree(movie_nodes)) print(f"演员节点度总和:{total_actor_degree}") print(f"电影节点度总和:{total_movie_degree}")
你给出的示例图运行后输出结果为:
演员节点度总和:6 电影节点度总和:6
符合二分图边数等于两侧度总和的特性。
内容的提问来源于stack exchange,提问作者BKH
相关产品推荐
相关产品推荐

