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

zik*_*y90 24 python csv arrays numpy

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

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

结果是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]
Run Code Online (Sandbox Code Playgroud)

前五行的.csv文件如下:

ImageId,Label
1,2
2
3,9
4,9
5,3
Run Code Online (Sandbox Code Playgroud)

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

编辑:

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

ask*_*han 34

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

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


小智 5

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

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