【问题标题】:Not to make 'nan' to '0' when reading the data through numpy.genfromtxt python通过numpy.genfromtxt python读取数据时不要将'nan'设置为'0'
【发布时间】:2016-05-31 02:13:47
【问题描述】:

现在我正在尝试读取名为“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”。

请您给点意见或建议?

谢谢你, 艾萨克

【问题讨论】:

    标签: numpy nan genfromtxt


    【解决方案1】:

    如果我尝试使用字符串输入来模拟您的情况,阅读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 是浮点数,而不是整数。

    两次调用都导致nan 缺失值

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

    【讨论】:

    • 谢谢。上面的结果发生在我们学校的超级计算机上,我也可以在我的个人笔记本电脑上读到“nan”,就像你说的那样。我认为它与超级计算机系统和python有关。感谢您的检查和建议。
    猜你喜欢
    • 1970-01-01
    • 2013-11-30
    • 2014-12-21
    • 2015-07-13
    • 2019-06-20
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    相关资源
    最近更新 更多