使用Pandas与Numpy读取矩阵文件时遇到格式兼容问题
问题分析
你的问题出在保存文件的格式不符合原文件约定,导致read_table无法正确解析数据:
- 原文件结构:第一行是矩阵边长
N,后续N行每行包含N个空格分隔的数值,无表头。 - 你用
DataFrame.to_csv保存时,默认会写入DataFrame的列名(表头),且未显式指定header=None,加上read_table读取新文件时的分隔符识别逻辑混乱,最终把每行数据当成单个字符串元素,数组尺寸和预期不符。
解决方案
修改保存代码,确保输出格式和原文件完全一致:
import os from pandas import DataFrame # 假设croptrix是裁剪后的N×N矩阵,clength为其边长 clength = croptrix.shape[0] save_path = os.path.join(root, 'sys_crop_long.dat') # 先写入第一行的矩阵边长 with open(save_path, 'w') as f: f.write(f"{clength}\n") # 追加写入矩阵数据:无表头、无索引,空格分隔 DataFrame(croptrix).to_csv(save_path, sep=' ', index=False, header=False, mode='a')
补充说明
- 原
read_table能解析初始文件,是因为初始文件无表头,且read_table默认用\s+(任意空格)作为分隔符;新文件因多了表头行,打乱了解析逻辑。 - 用
mode='a'追加写入矩阵数据,避免覆盖之前写入的边长行。
内容的提问来源于stack exchange,提问作者QuantumDrive
相关产品推荐
相关产品推荐

