如何在写入DAT文件时给二维数组每行开头添加空格?
解决方案
你可以通过np.savetxt的fmt参数自定义输出格式,直接在每个数值的格式字符串前添加空格,同时指定符合需求的科学计数法格式:
import numpy as np # 假设x和y是你的数据数组 data = np.column_stack((x, y)) with open('output.dat', 'w') as datfile: # fmt参数中,%1.7E 表示带1个前导空格、7位小数的科学计数法格式,两个字段用两个空格分隔 np.savetxt(datfile, data, fmt=' %1.7E %1.7E')
关键说明:
fmt=' %1.7E'里的前置空格就是用来实现每行开头空格的,%1.7E指定了输出格式为大写E的科学计数法并保留7位小数,和你期望的示例格式完全匹配。- 你原代码里的
for _ in range(N):循环是多余的,它会把整个data数组重复写入N次,去掉这个循环就能正常输出一遍数据。
测试后输出会和你期望的一致:
0.0000000E+00 0.0000000E+00 2.0020020E-03 0.0000000E+00 4.0040040E-03 0.0000000E+00 ...
如果需要更灵活的控制,也可以手动遍历每行数据,拼接带开头空格的字符串后写入:
with open('output.dat', 'w') as datfile: for row in data: line = f' {row[0]:.7E} {row[1]:.7E}\n' datfile.write(line)
内容的提问来源于stack exchange,提问作者Tan Phan
相关产品推荐
相关产品推荐

