3

我有两个字符串数组,它们必须逐行跟随,然后必须将它们写入文本文件

import numpy as np
title1 = np.array(['text1'])  
title2 = np.array(['text2'])
np.savetxt('result.csv',(title1, title2),fmt="%s")

结果应该是一个开头的文件:

text1
text2

但它更像这样:

text1text2

第二个问题是在这两行文本下面我需要在下一行放置一个矩阵(我的要大得多)。矩阵的条目应该用分号“;”隔开 - 在行的末尾不应该有一个(!)

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

4

2 回答 2

4

我想到了另一个线程:

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 中,矩阵的前 2 列具有“日期”模式……我在这里寻求澄清以了解发生了什么?

于 2013-11-06T10:37:23.817 回答
1

看看这个答案\nNumpy 是根据 unix 标准进行编码的,但记事本不理解并且只期望 windows,并且没有\r.

编辑:正如其他问题文档中所解释的,numpy.savetxt 有一个参数,可让您设置窗口的换行符编码。所以,如果你真的想与记事本兼容,你需要这样的东西:

np.savetxt('test.csv', a, delimiter=';', newline='\r\n', fmt='%.1f')
于 2013-11-05T16:47:35.997 回答