如何解决NetworkX模块不存在info属性的AttributeError错误?
NetworkX中
AttributeError: module 'networkx' has no attribute 'info'的解决办法 nx.info()函数在NetworkX 2.0及以后版本中被移除,直接调用会触发该错误。以下是两种替代方案,实现原nx.info(G)的功能:
方案一:手动输出图的核心信息
直接调用NetworkX基础方法打印图的关键属性:
import networkx as nx G = nx.read_edgelist('webpages.txt', create_using=nx.DiGraph()) print(f"Name: {G.name}") print(f"Type: {type(G).__name__}") print(f"Number of nodes: {G.number_of_nodes()}") print(f"Number of edges: {G.number_of_edges()}") # 针对有向图额外输出入度/出度统计 if isinstance(G, nx.DiGraph): total_in_degree = sum(degree for _, degree in G.in_degree()) total_out_degree = sum(degree for _, degree in G.out_degree()) print(f"Average in degree: {total_in_degree / G.number_of_nodes():.2f}") print(f"Average out degree: {total_out_degree / G.number_of_nodes():.2f}")
方案二:封装自定义函数复用
如果需要频繁使用类似nx.info()的功能,可封装专属函数:
import networkx as nx def graph_info(graph): info_lines = [] info_lines.append(f"Name: {graph.name}") info_lines.append(f"Type: {type(graph).__name__}") info_lines.append(f"Number of nodes: {graph.number_of_nodes()}") info_lines.append(f"Number of edges: {graph.number_of_edges()}") if isinstance(graph, nx.DiGraph): avg_in_degree = sum(d for _, d in graph.in_degree()) / graph.number_of_nodes() avg_out_degree = sum(d for _, d in graph.out_degree()) / graph.number_of_nodes() info_lines.append(f"Average in degree: {avg_in_degree:.2f}") info_lines.append(f"Average out degree: {avg_out_degree:.2f}") else: avg_degree = sum(d for _, d in graph.degree()) / graph.number_of_nodes() info_lines.append(f"Average degree: {avg_degree:.2f}") return '\n'.join(info_lines) # 使用示例 G = nx.read_edgelist('webpages.txt', create_using=nx.DiGraph()) print(graph_info(G))
内容的提问来源于stack exchange,提问作者Patcharaporn Kladkham
相关产品推荐
相关产品推荐

