0

Now I am trying to read the array in the file named "filin1" such as:

filin1 = [1,3,4, ....,nan,nan,nan..] (in the file, actually it is just a column not an array like this)

So, I am trying to use numpy.genfromtxt as:

 np.genfromtxt(filin1,dtype=None,delimiter=',',usecols=[0],missing_values='Missing',usemask=False,filling_values=np.nan)

I expected to get [1,3,4, ....,nan,nan,nan..], but turned out to be:

[1,3,4, ....,0.,0.,0...]

I would like to hold 'nan' without converting it to '0.'.

Would you please give any idea or advice?

Thank you, Isaac

Isaac
  • 885
  • 2
  • 15
  • 35

1 Answers1

2

If I try to simulate your case with a string input, I have no problem reading the nan

In [73]: txt=b'''1,2
3,4
1.23,nan
nan,02
'''
In [74]: txt=txt.splitlines()
In [75]: txt
Out[75]: [b'1,2', b'3,4', b'1.23,nan', b'nan,02']
In [76]: np.genfromtxt(txt,delimiter=',')
Out[76]: 
array([[ 1.  ,  2.  ],
       [ 3.  ,  4.  ],
       [ 1.23,   nan],
       [  nan,  2.  ]])

nan is a valid float value

In [80]: float('nan')
Out[80]: nan

Your command works also, though it does

In [82]: np.genfromtxt(txt,dtype=None,delimiter=',',usecols=[0],missing_values='Missing',usemask=False,filling_values=np.nan)
Out[82]: array([ 1.  ,  3.  ,  1.23,   nan])

Expecting the columns to contain integers (rather than float) could cause problems, since nan is a float, not int.

And missing values result in nan with both calls

In [91]: txt
Out[91]: [b'1,2', b'3,', b'1.23,nan', b'nan,02', b',']
hpaulj
  • 221,503
  • 14
  • 230
  • 353
  • Thank you. The results above happens in our school super computer and I also could read 'nan' in my personal laptop as you said. I think that it is related to the super computer system and python. I appreciate your check and advice. – Isaac Feb 18 '16 at 22:32