numpy savetxt格式化为整数不保存零

时间:2014-03-21 11:18:24

标签: python arrays csv numpy

我试图通过以下方式将numpy.array保存到.csv。

with open("resultTR.csv", "wb") as f:
    f.write(b'ImageId,Label\n')
    numpy.savetxt(f, result, fmt='%i', delimiter=",")

结果是numpy.array,它由两列组成,第一列是索引(数字1到n),第二列是(0,9)。

不幸的是,我遇到的问题是,只要第二列中有0,就没有任何内容写入第二列中生成的.csv文件。

换句话说,前五行数组如下所示:

[[  1.00000000e+00   2.00000000e+00]
 [  2.00000000e+00   0.00000000e+00]
 [  3.00000000e+00   9.00000000e+00]
 [  4.00000000e+00   9.00000000e+00]
 [  5.00000000e+00   3.00000000e+00]

前五行.csv文件如下:

ImageId,Label
1,2
2
3,9
4,9
5,3

在我看来,我的代码应该可以工作,因此在我看来,保存零非常奇怪。有没有人知道我的代码写入.csv文件可能有什么问题?

修改

仅仅为了完成我的python版本是2.7.2并且它在Mac OS X 10.9.2上运行

3 个答案:

答案 0 :(得分:31)

我会尝试将数组保存为int数组,如result.astype(int)或完全保存:

with open("resultTR.csv", "wb") as f:
    f.write(b'ImageId,Label\n')
    numpy.savetxt(f, result.astype(int), fmt='%i', delimiter=",")

答案 1 :(得分:0)

在使用numpy.savetxt的脚本中也遇到了同样的问题,但我无法使用result.astype(int),因为我在另一列中有浮动。

使用%5.0f解决了零输出格式的问题。

答案 2 :(得分:0)

更简洁的解决方案是使用参数 fmt='%s'

with open("resultTR.csv", "wb") as f:
   f.write(b'ImageId,Label\n')
   numpy.savetxt(f, result, fmt='%s', delimiter=",")