不要制作' nan'到' 0'通过numpy.genfromtxt python读取数据时

时间:2016-02-18 18:24:32

标签: numpy nan genfromtxt

现在我正在尝试读取名为" filin1"的文件中的数组。如:

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

所以,我试图将numpy.genfromtxt用作:

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

我希望得到[1,3,4,......,nan,nan,nan ..],但原来是:

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

我想抱着' nan'没有将其转换为' 0。'。

请您提出任何意见或建议吗?

谢谢你, 艾萨克

1 个答案:

答案 0 :(得分:2)

如果我尝试使用字符串输入来模拟您的案例,我在阅读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是有效的浮点值

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

您的命令也有效,但确实如此

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

期望列包含整数(而不是浮点数)可能会导致问题,因为nan是浮点数,而不是int。

缺少值导致nan两次调用

In [91]: txt
Out[91]: [b'1,2', b'3,', b'1.23,nan', b'nan,02', b',']