我正在尝试保存一个包含大量数字并包含标题的数据文件。我坚持将标题与相应的列对齐。示例代码:
import numpy as np
import os
Output = np.empty((0,3), int)
for i in range(30):
Values = 10e6 * np.random.random((1,3))
Output = np.vstack((Output, Values))
header = 'A\tB\tC'
np.savetxt('Output.txt', Output, delimiter='\t', newline=os.linesep,
header=header, comments='')
我的输出是:
但是我想要的是“A”、“B”和“C”与列对齐,即:
我怎样才能做到这一点?感谢您的帮助。
最佳答案
标题的格式必须与列的格式相匹配
例如,对于 3 列和 %10.5f
格式,每行格式为:
In [185]: fmt = '\t'.join(['%10.5f']*3)
In [186]: fmt
Out[186]: '%10.5f\t%10.5f\t%10.5f'
所以一个数字行将被写成:
In [187]: fmt%tuple(np.random.random(3))
Out[187]: ' 0.83330\t 0.90960\t 0.07613'
相应的 header
将是:
In [188]: '%10s\t%10s\t%10s'%('A','B','C')
Out[188]: ' A\t B\t C'
In [189]: header = '%10s\t%10s\t%10s'%('A','B','C')
In [193]: np.savetxt('test.txt', np.random.random((2,3)), delimiter='\t', heade
...: r=header, fmt='%10.5f')
In [194]: cat test.txt
# A B C
0.55919 0.55277 0.47236
0.93945 0.50398 0.56320
签名行给出默认的fmt
np.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='', comments='# ')
这更难匹配,因为它只指定小数点数,而不是总宽度。
关于python - Np.savetxt 将标题与列对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47757493/