我有两个字符串数组必须逐行跟随,之后必须用文本文件写
import numpy as np
title1 = np.array(['text1'])
title2 = np.array(['text2'])
np.savetxt('result.csv',(title1, title2),fmt="%s")
结果应该是以:
开头的文件text1
text2
但更像是这样:
text1text2
第二个问题是在这两行文本下面我需要在下一行('s)中放置一个矩阵(我的更大)。矩阵的条目应以分号“;”分隔。 - 在行的末尾不应该有一个(!)
a=np.array([[1.2,2.3,3.4],[4.5,5.6,6.7],[7.8,8.8,9.8]])
np.savetxt('test.csv', a, delimiter=';', fmt='%.1f')
结果文件应如下所示:
text1
text2
1.2;2.3;3.4
4.5;5.6;6.7
7.8;8.8;9.8
上面的代码没有将下一行条目放到输出文件的下一行。 (当用记事本打开它时,它没有,在excel中它似乎工作。我怎么能按照我描述的方式在输出中组合字符串和数字?
答案 0 :(得分:3)
我有想法看另一个主题:
np.savetxt('test.csv',(title1, title2),fmt="%s", newline='\r\n')
import csv
with open('test.csv', 'a') as f:
np.savetxt(f, I, delimiter=';', fmt='%s,'newline='\r\n')
f.close()
'a'用于追加模式,但遗憾的是我收到错误消息
line 1047, in savetxt
fh.write(asbytes(format % tuple(row) + newline))
TypeError: must be str, not bytes
当我使用'ab'而不是'a'时,我会得到一个在记事本中看起来正确的结果 但现在在Excel中,矩阵的前两列具有“日期”模式 ......我在这里寻求澄清以了解发生了什么?
答案 1 :(得分:1)
结帐this answer。 Numpy根据unix标准进行编码,但记事本不理解并且只需要Windows,并且在没有\n
的情况下不会呈现\r
,但几乎任何其他非脑死亡软件都会正确读取它。 / p>
编辑:正如this other question或documentation中所述,numpy.savetxt有一个参数,可让您为Windows设置换行符编码。所以,如果你真的想要与记事本兼容,你需要类似的东西:
np.savetxt('test.csv', a, delimiter=';', newline='\r\n', fmt='%.1f')