Python 将数组写入文本文件

Python 将数组写入文本文件,python,python-3.x,numpy,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\

我正试图按照下面使用此代码的示例将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对象。当我指定实际的输出文件名时,我可以让savetxt工作。例如,这项工作:

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

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

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


我建议您使用Python的pickle模块。它允许以很少的复杂度或代码行保存任何数组

试试这个:

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

谢谢,这是可行的,但是数组都在输出文件的一行上。如何使数组的每一行写入输出文件中的新行?@DaveLeighton Try
np.savetxt(outfile,data\u slice,fmt='%4.1f',newline=“\n”)
相反是的,这是我尝试的第一件事,但没有改变输出。仍然都在一行。@RafaelCardoso:为了便于在以二进制模式打开文件的情况下移植到Windows系统,这不应该类似于
newline=os.linesep
?Windows文本编辑器通常将
\n
本身视为纯空白或无空白,只有
\r\n
实际被渲染为换行符。默认值毕竟已经是
\n
,因此
newline=“\n”
不会改变行为。
import pickle
f = open(name_of_file,'w')
pickle.dump(f,name_of_array)
f.close()