web-dev-qa-db-ja.com

整数としてのnumpy savetxt形式はゼロを保存していません

次の方法でnumpy.arrayを.csvに保存しようとしています。

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

結果は、2つの列で構成されるnumpy.arrayです。最初の列はインデックス(1〜nの数字)、2番目の列の値は(0,9)です。

残念ながら、2番目の列に0があると、2番目の列の結果の.csvファイルには何も書き込まれないという問題があります。

つまり、配列の最初の5行は次のようになります。

[[  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ファイルの最初の5行:

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

私のコードは機能するはずなので、ゼロを保存しないのは非常に奇妙に思えます。 .csvファイルに書き込むためのコードで何が間違っている可能性があるか、誰かが考えていますか?

編集:

完全に私のpythonバージョンは2.7.2で、Mac OS X 10.9.2で実行されています

24
ziky90

result.astype(int)のように、または完全に配列をint配列として保存してみます:

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

_numpy.savetxt_を使用するスクリプトでも同じ問題が発生しましたが、別の列にフロートがあったため、result.astype(int)を使用できませんでした。

ゼロの出力形式に_%5.0f_を使用して解決しました。

0
Guto