将数组写入文本文件

时间:2015-05-21 21:24:22

标签: python python-3.x numpy

我正在尝试使用此代码按照此处的示例将5x3数组写入文本文件。

import numpy as np
data = np.loadtxt('array_float.txt')
with open('out.txt', 'w') as outfile:
    for data_slice in data:
        np.savetxt(outfile, data_slice, fmt='%4.1f')

导致以下错误:

File C:\Python34\lib\site-packages\numpy\lib\npyio.py", line 1087, in savetxt
  fh.write(asbytes(format % tuple(row) + newline))
TypeError: must be str, not bytes

似乎savetxt不喜欢outfile对象。当我指定实际的outfile名称时,我能够使savetxt工作。例如,这有效:

np.savetxt('out.txt', data_slice, fmt='%4.1f')

但只有数组的最后一行被保存到'out.txt'。

2 个答案:

答案 0 :(得分:2)

您应该以二进制模式打开文件(使用abwb

import numpy as np
data = np.loadtxt('array_float.txt')
with open('out.txt', 'ab') as outfile:
    for data_slice in data:
        np.savetxt(outfile, data_slice, fmt='%4.1f')

答案 1 :(得分:1)

我建议你使用Python的pickle模块。它允许保存任何阵列,只需很少的复杂性或代码行。

试试这个:

import pickle
f = open(name_of_file,'w')
pickle.dump(f,name_of_array)
f.close()