我试图将数据保存在文件中。 在我的计算过程中,我得到了3个数组,Dthick,Dfreq,Dresult。 我想在像这样的文件中打印它们
Dthick1 Dfreq1 Dresult1
Dthick2 Dfreq2 Dresult2
Dthick3 Dfreq3 Dresult3
Dthick4 Dfreq4 Dresult4
... ... ...
我尝试使用此
def DATASAVEUR():
datafile_path = "datafile.txt"
datafile_id = open(datafile_path, 'wb')
with open('datafile.txt','wb') as datafile_id:
np.savetxt(datafile_id, Dthick,fmt='%.18f',newline='\n')
np.savetxt(datafile_id, Dfreq,fmt='%.18f',newline='\n')
np.savetxt(datafile_id, Dresult,fmt='%.18f',newline='\n')
datafile_id.close()
但是一切都只是停留在同一条线上。 我尝试了分隔符和换行符 我试图将所有数据重新组合成一个数组。 但不管我做什么,我最终会得到类似的东西
Dthick1 Dthick2 Dthick3 ... Dfreq1 Dfreq2 Dfreq3... Dresult1 Dresult2 Dresult3..
答案必须非常简单,但我似乎无法找到它。
答案 0 :(得分:0)
这里有两个不同的问题:
以二进制模式打开输出文件(b
中的wb
),如果要将文本写入文件,这不是一个好主意。你在使用Windows吗?在您编写文本时,换行符由一系列回车符和换行符替换,但它只是二进制模式下的换行符。删除b
,您将获得多行。
您正在尝试保存第一列,然后是第二列,然后是第三列,但是保存到文本文件会按行继续。您可以将三列组合成二维矩阵并保存:
np.savetxt("datafile.txt", np.vstack((Dthick,Dfreq,Dresult)).T)
或者,您可以迭代三个数组并逐行编写它们:
from itertools import izip
for thick, freq, result in izip(Dthick, Dfreq, Dresult):
print >>datafile_id, thick, freq, result