numpy savetxt formatted as integer is not saving zeroes

41,766

Solution 1

I would try saving the array as an int array, as in result.astype(int), or in full:

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

Solution 2

A cleaner solution is using the argument fmt='%s'.

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

ziky90

Updated on June 26, 2021

Comments

  • ziky90
    ziky90 almost 3 years

    I am trying to save numpy.array to .csv in the following way.

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

    result is numpy.array that consists of two columns, first column are indices (numbers 1 through n) and second column values from (0,9).

    Unfortunately I have problem that whenever there is 0 in the second column then nothing is written to the resulting .csv file in the second column.

    In other words first five rows of array looks like this:

    [[  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]
    

    And first five rows of .csv file like this:

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

    It looks to me like my code should work and thus not saving zeroes seems to me very weird. Does anyone have some idea what can possibly be wrong with my code for writing to .csv file?

    EDIT:

    Just for compleetnes my python version is 2.7.2 and it's running on Mac OS X 10.9.2