如何逐字符读取TXT文件并转换为二维NumPy数组?
将6位数字文本转换为二维NumPy数组的解决方案
np.loadtxt默认会把每行的6位数字解析成单个整数(比如000120会被转成120),自然得不到你要的逐字符拆分的二维数组,试试下面几种方法:
方法一:Python文件读取+列表推导式
先读取所有行,再逐行拆分字符并转换为整数,最后转为NumPy数组:
import numpy as np with open('./file.txt', 'r') as f: lines = f.read().splitlines() # 每行拆成单个字符,转整数后生成二维数组 arr = np.array([[int(char) for char in line] for line in lines]) print(arr)
方法二:使用np.genfromtxt处理字符串
利用genfromtxt读取每行作为字符串,再拆分转换:
import numpy as np # 读取每行为字符串类型 raw_data = np.genfromtxt('./file.txt', dtype=str) # 把每个字符串拆成字符列表,再转为整数数组 arr = np.array([list(line) for line in raw_data], dtype=int) print(arr)
方法三:向量化操作(更高效)
通过NumPy的视图操作直接拆分字符串,适合大数据量场景:
import numpy as np # 读取为6位字符串数组 raw_data = np.genfromtxt('./file.txt', dtype='U6') # 将每个字符串拆分为单个字符,重塑为二维数组后转整数 arr = raw_data.view('U1').reshape(raw_data.shape[0], 6).astype(int) print(arr)
以上三种方法都能输出你需要的格式:
[[0 0 0 1 2 0] [0 0 5 0 0 0] [0 0 0 9 0 0] [0 5 5 0 0 0]]
内容的提问来源于stack exchange,提问作者Pippomuc
相关产品推荐
相关产品推荐

