字符串和数组(矩阵)行:numpy.savetxt

时间:2013-11-05 16:19:39

标签: python csv numpy

我有两个字符串数组必须逐行跟随,之后必须用文本文件写

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中它似乎工作。我怎么能按照我描述的方式在输出中组合字符串和数字?

2 个答案:

答案 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 questiondocumentation中所述,numpy.savetxt有一个参数,可让您为Windows设置换行符编码。所以,如果你真的想要与记事本兼容,你需要类似的东西:

np.savetxt('test.csv', a, delimiter=';', newline='\r\n', fmt='%.1f')