我试图通过以下方式将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上运行
答案 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=",")