我需要将3个numpy数组写入txt文件。该文件的头部看起来像这样:
#Filexy
#time operation1 operation2
numpy数组如下所示:
time = np.array([0,60,120,180,...])
operation1 = np.array([12,23,68,26,...)]
operation2 = np.array([100,123,203,301,...)]
最后,.txt文件看起来应该是这样的(分隔符应该是一个标签符号):
#Filexy
#time operation1 operation2
0 12 100
60 23 123
120 68 203
180 26 301
.. ... ...
我尝试使用“numpy.savetxt” - 但我没有得到我想要的格式。
非常感谢你的帮助!
答案 0 :(得分:4)
我不确定您尝试了什么,但您需要使用header
中的np.savetxt
参数。此外,您需要正确连接数组。最简单的方法是使用np.c_
,它会强制你的1D阵列进入2D数组,然后按照你期望的方式连接它们。
>>> time = np.array([0,60,120,180])
>>> operation1 = np.array([12,23,68,26])
>>> operation2 = np.array([100,123,203,301])
>>> np.savetxt('example.txt', np.c_[time, operation1, operation2],
header='Filexy\ntime operation1 operation2', fmt='%d',
delimiter='\t')
example.txt
现在包含:
# Filexy
# time operation1 operation2
0 12 100
60 23 123
120 68 203
180 26 301
还要注意使用fmt='%d'
来获取输出中的整数值。默认情况下,savetxt
将保存为float,即使对于整数数组也是如此。
关于分隔符,您只需要使用delimiter
参数。这里不清楚,但事实上,列之间有标签。例如,vim
使用点向我显示标签:
# Filexy
# time operation1 operation2
0· 12· 100
60· 23· 123
120·68· 203
180·26· 301
<强>附录:强>
如果要添加标题和在数组之前添加额外的行,最好创建自定义标题,并添加自己的注释字符。使用comment
参数可防止savetxt
添加额外的#
。
>>> extra_text = 'Answer to life, the universe and everything = 42'
>>> header = '# Filexy\n# time operation1 operation2\n' + extra_text
>>> np.savetxt('example.txt', np.c_[time, operation1, operation2],
header=header, fmt='%d', delimiter='\t', comments='')
产生
# Filexy
# time operation1 operation2
Answer to life, the universe and everything = 42
0 12 100
60 23 123
120 68 203
180 26 301
答案 1 :(得分:0)
试试这个:
f = open(name_of_the_file, "a")
np.savetxt(f, data, newline='\n')
f.close()