如何使用.write方法将numpy计算结果保存为单列txt文件
Numpy一维数组保存为单列TXT文件方法
你手中的计算结果为数值型numpy一维数组,节选片段如下:
[-3.92666863e-01 -2.68601261e-01 -2.65401836e-01 -2.34765968e-01 -2.40034211e-01 -2.38497694e-01 -2.29052660e-01 -2.34477566e-01 -2.15617829e-01 -2.02265363e-01 -2.14098632e-01 -1.93120651e-01 -2.09928485e-01 -1.82968909e-01 -1.66702484e-01 -1.47223081e-01 -1.43542991e-01 -1.31421280e-01 -1.03357537e-01 -8.99456786e-02 -9.66305953e-02 -9.22995465e-02 -7.08553941e-02 -7.72590531e-02 -8.38534896e-02 -5.62331513e-02 -6.87916001e-02 -8.25322862e-02 -9.79528867e-02 -1.28317903e-01 -1.58801111e-01 -1.65446428e-01 -1.45221084e-01 -1.05980148e-01 -1.13508216e-01 -1.06785745e-01 -6.16426372e-02 -8.45649741e-02 -7.95497886e-02 -8.23653704e-02]
原有保存代码如下:
Savefile = open("My_file.txt", "w+") Savefile.write(str(Data))
该代码存在两个核心问题:
write方法仅支持字符串类型入参,直接传入numpy数组会触发类型错误- 整体转字符串写入的内容是numpy数组的打印预览格式,默认按多列排版,无法满足单列存储要求
直接对整个numpy数组做str()转换得到的字符串自带方括号、固定宽度换行,和你在控制台打印数组看到的格式完全一致,这是存出多列格式的根本原因,可以通过以下两种方法实现单列存储:
方法1:使用numpy内置savetxt接口(推荐)
numpy自带专门的文本存储接口,无需手动处理文件IO、格式转换,默认输出为单列每行一个数值,代码最简洁:
import numpy as np # Data为你的numpy数组变量 np.savetxt("My_file.txt", Data)
如果需要自定义数值精度,可以添加fmt参数,例如保留8位小数:
np.savetxt("My_file.txt", Data, fmt="%.8f")
方法2:手动遍历元素写入
如果需要自定义写入逻辑,可以逐一遍历数组中的元素,每个元素单独写入并追加换行符,推荐使用with上下文管理器自动处理文件关闭,避免资源泄漏:
with open("My_file.txt", "w+") as savefile: for num in Data: # 每个数值后加换行符\n实现单行单值 savefile.write(f"{num}\n")
同样可以在字符串格式化时指定数值精度,例如f"{num:.8f}\n"即可实现和上述savetxt方法一致的精度控制。
内容的提问来源于stack exchange,提问作者Philipp
相关产品推荐
相关产品推荐

