J'essaie de sauvegarder numpy.array au format .csv de la manière suivante.
with open("resultTR.csv", "wb") as f:
f.write(b'ImageId,Label\n')
numpy.savetxt(f, result, fmt='%i', delimiter=",")
result est numpy.array qui est composé de deux colonnes, la première colonne contient les index (nombres 1 à n) et les valeurs de la deuxième colonne à partir de (0,9).
Malheureusement, le problème est que chaque fois qu'il y a 0 dans la deuxième colonne, rien n'est écrit dans le fichier .csv résultant dans la deuxième colonne.
En d'autres termes, les cinq premières lignes du tableau ressemblent à ceci:
[[ 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]
Et les cinq premières lignes du fichier .csv comme ceci:
ImageId,Label
1,2
2
3,9
4,9
5,3
Il me semble que mon code devrait fonctionner et que, par conséquent, ne pas économiser les zéros me semble très étrange. Quelqu'un at-il une idée de ce qui peut éventuellement être faux avec mon code pour écrire dans un fichier .csv?
MODIFIER:
Juste pour compléter ma version de python est 2.7.2 et fonctionne sous Mac OS X 10.9.2
Je voudrais essayer de sauvegarder le tableau en tant que tableau int, comme dans result.astype(int)
, ou dans son intégralité:
with open("resultTR.csv", "wb") as f:
f.write(b'ImageId,Label\n')
numpy.savetxt(f, result.astype(int), fmt='%i', delimiter=",")
Également eu le même problème dans un script utilisant numpy.savetxt
, mais je ne pouvais pas utiliser result.astype(int)
car j'avais des éléments flottants dans une autre colonne.
Résolu en utilisant %5.0f
pour le format de la sortie des zéros.