2016-07-21 50 views
0

我在txt文件中写入结构化数组时遇到了问题。 具有输出文件(OUTFILE)打开,我用下面的numpy的功能:使用savetxt编写numpy结构数组

np.savetxt(*outfile*, ***recarray***, fmt=['%s','%-7.4f','%-7.4f','%-7.4f']) 

recarray就像是[(b'H”,0.9425,0.1412,7.1414)... (b'N',1.0037,4.0524,6.8000)],其中第一个元素有numpy.bytes_类型,其他元素是numpy.float64

TypeError: must be str, not bytes 

那么,是什么把这个数组中的文件最简单的方法:同时在文件中写入这个rec​​array出现

错误消息?也许还有另一个功能?

回答

0

我假设你正在使用Python 3.0。在这种情况下,您必须在'%s'之前指定字母b,如下所示:b'%s'

在Python3中,默认的字符串类型是unicode,因此您使用额外的b来标记字节字符串。

你的脚本应该是:

np.savetxt(*outfile*, ***recarray***, fmt=[b'%s','%-7.4f','%-7.4f','%-7.4f']) 

不要忘了写wb当你打开你的.txt文件:

file = open('workfile.txt','wb') 
+0

谢谢!它现在有效。但现在还有另一个问题。是否可以将b'H'转换为单个H符号?而且我也不明白为什么即使设置** delimiter ='\ n'**它不会像这样在文件中写入重新数组元素,即单行元素: H 0.9425 0.1412 7.1414 ... N 1.0037 4.0524 6.8000 但是他们都是按行写的。与标题相同的问题,也是按行列印的。 –

+0

如果第一个问题解决了,请将我的答案设置为其他用户的解决方案。 你应该开一个新的问题,因为你的第二个问题与第一个问题有所不同。 – Deadpool

+0

亲爱的@Andromedae93,再次感谢你的帮助。我按照你的建议准备了一个单独的问题 –