保存文件中的数据的问题

时间:2017-05-17 10:21:32

标签: arrays numpy save

我试图将数据保存在文件中。 在我的计算过程中,我得到了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..

答案必须非常简单,但我似乎无法找到它。

1 个答案:

答案 0 :(得分:0)

这里有两个不同的问题:

  1. 以二进制模式打开输出文件(b中的wb),如果要将文本写入文件,这不是一个好主意。你在使用Windows吗?在您编写文本时,换行符由一系列回车符和换行符替换,但它只是二进制模式下的换行符。删除b,您将获得多行。

  2. 您正在尝试保存第一列,然后是第二列,然后是第三列,但是保存到文本文件会按行继续。您可以将三列组合成二维矩阵并保存:

    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