如何完整打印networkx.adjacency_matrix输出的全部邻接矩阵内容
问题原因
networkx.adjacency_matrix(G).A返回的是numpy二维数组,numpy默认对大尺寸数组启用打印截断规则,仅输出数组首尾部分内容,中间以省略号替代。该截断仅作用于控制台打印展示环节,内存中存储的A变量本身是完整的邻接矩阵,不存在数据缺失。
解决方案
控制台打印全量矩阵
导入numpy库并修改打印配置,取消数组元素的显示数量上限即可,修改后的完整代码如下:import pandas import networkx import numpy as np # 关闭numpy大数组打印截断逻辑 np.set_printoptions(threshold=np.inf) data = pandas.read_excel("Book1.xlsx", header=None) edgeList = data.values.tolist() G = networkx.Graph() for i in range(len(edgeList)): G.add_edge(edgeList[i][0], edgeList[i][1], weight=edgeList[i][2]) A = networkx.adjacency_matrix(G).A print(A)不依赖打印,直接使用/持久化矩阵
如果图的节点规模较大,控制台打印全量矩阵会出现加载卡顿、浏览不便的问题,不建议强制打印全量内容:- 若Prim算法实现与邻接矩阵生成在同一段代码中,直接调用内存中的
A变量即可,A已经存储了全部邻接权重数据,可直接作为算法入参使用,无需打印验证。 - 若需要持久化存储矩阵供后续流程调用,可直接将矩阵导出为csv文件:
# 导出无索引的完整邻接矩阵到csv文件 pandas.DataFrame(A).to_csv("full_adjacency_matrix.csv", index=False, header=False)- 若Prim算法实现与邻接矩阵生成在同一段代码中,直接调用内存中的
内容的提问来源于stack exchange,提问作者Hydroxy21
相关产品推荐
相关产品推荐

