Python如何将txt文件中的01数据加载为二维方阵
问题根因
- 变量名笔误:第一行读取结果赋值给了
N,第二行却传入未定义的变量M生成数组,首先会触发变量未定义的语法错误 readlines()返回的是每行字符串组成的一维列表,直接转numpy数组不会自动拆分每行的0/1元素,得到的自然是一维数组,不符合二维方阵的要求- 未处理每行末尾的换行符
\n,会导致额外的无效字符被识别
修复方案
方案1:适配所有场景的手动处理方式
如果你的txt文件中每行的0和1是紧挨着的(比如0110格式),用以下代码:
import numpy as np with open('Graph2021.txt', 'r', encoding='utf-8') as f: lines = f.readlines() # 逐行去除换行符,拆分单个字符转整数后生成二维数组 N = np.array([[int(c) for c in line.strip()] for line in lines])
如果你的txt文件中每行的0和1是用空格/制表符分隔的(比如0 1 1 0格式),用以下代码:
import numpy as np with open('Graph2021.txt', 'r', encoding='utf-8') as f: lines = f.readlines() # 逐行去除换行符,按分隔符拆分后转整数生成二维数组 N = np.array([list(map(int, line.strip().split())) for line in lines])
方案2:更简便的numpy原生读取方式
针对空格/制表符分隔的txt文件,直接调用numpy内置方法即可一步完成读取:
import numpy as np N = np.loadtxt('Graph2021.txt', dtype=int)
结果校验
执行以下代码确认输出符合预期:
print(N.ndim) # 预期输出2 print(N.shape) # 预期输出为(n,n)的方阵格式
内容的提问来源于stack exchange,提问作者chloebutter
相关产品推荐
相关产品推荐

