NumPy savetxt 与 loadtxt 函数用法指南

Felix
Felix
发布时间:2026-10-11 | 2人浏览过
原创

NumPy 内置了 savetxt 与 loadtxt 函数,专为内存矩阵与磁盘纯文本之间的高速互通设计。配合正确的分隔符与编码设定,可彻底告别繁琐的手动读写逻辑,实现结构化数据的稳定存取。

NumPy savetxt 与 loadtxt 的核心定位

在处理结构化的二维或多维数值时,手动循环写入往往效率低下且易出错。savetxt 负责将 numpy.ndarray 按指定规则序列化至纯文本文件,而 loadtxt 则负责逆向解析,支持选择性读取特定列或跳过表头。两者配合即可建立稳定的中间数据交换通道。

第1步:使用 savetxt 将内存数据保存至文件

目的:将定义的数组对象持久化到当前目录,生成逗号分隔的 CSV 格式文件。

入口与参数:需导入 numpy 模块,调用 np.savetxt 方法。关键参数包括文件路径(fname)、待保存数组(X)、字段分隔符(delimiter)以及文本编码(encoding)。执行前请确认目标路径无重要旧数据,因同名文件会被直接覆盖,建议提前备份。

import numpy as np
data = np.ones((5, 3))
np.savetxt(fname="./data.csv", X=data, delimiter=',', encoding='utf-8')
data.csv 文件成功生成并在资源管理器中显示
执行完成后,可在对应目录下查看生成的 data.csv 文件,双击预览可见每行包含三个由逗号隔开的数值 1.0。

第2步:使用 loadtxt 精准读取指定列数据

目的:从已保存的 CSV 文件中提取前两列内容,还原为 NumPy 数组供后续计算使用。

入口与参数:调用 np.loadtxt 方法。重点控制 fname 指向源文件,delimiter 匹配写入时的分隔符,并通过 usecols 传入元组 (0, 1) 限定只加载索引为 0 和 1 的列。skiprows 可用于忽略文件首行的注释或标题行。

import numpy as np
data = np.loadtxt("./data.csv", delimiter=',', usecols=(0, 1))
print(data)
终端输出加载出的二维数组,包含5行2列数值
控制台打印结果显示为 5x2 的矩阵,验证了 usecols 参数成功过滤了第三列,且数据类型自动推断为浮点型。

关键参数配置对照与排错指南

实际工程中常需处理非标准格式或带元数据的文件,以下参数需重点留意:

  • header / footer:savetxt 可在文件首尾追加自定义字符串,常用于添加版本信息或数据说明。
  • comments:默认值为 '# '。若文件中包含以其他符号开头的注释,需在 save 和 load 时统一指定该字符,否则 loadtxt 会将其误判为有效数据。
  • dtype:loadtxt 默认读取为 float,若原始数据含字符串或日期,需显式声明 dtype=str 或对应的复合类型,防止类型转换异常报错。
  • unpack=True:当 usecols 读取多列时设为 True,返回结果为拆分的独立数组而非二维矩阵,便于直接赋值给多个变量。
  • encoding:跨平台读取中文备注或特殊符号时,建议明确指定 'utf-8' 或 'gbk',避免 locale 环境差异导致乱码或 FileNotFoundError。

若遇到 UnicodeDecodeError 或 ValueError,通常是因为写入分隔符与读取分隔符不一致,或是使用了 unpack=True 但列数不匹配变量数。检查两端代码的参数映射即可快速解决。

简要总结

savetxt 与 loadtxt 构成了轻量级数据流存取的标准化方案。掌握参数间的对应关系后,无需依赖第三方库即可完成结构化数据的交叉读写。以上就是 NumPy savetxt 与 loadtxt 函数的详细内容,更多关于 Python 数据持久化与文件读写的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表