【问题标题】:Convert python list with None values to numpy array with nan values将具有 None 值的 python 列表转换为具有 nan 值的 numpy 数组
【发布时间】:2013-10-27 16:27:07
【问题描述】:

我正在尝试将包含数值和 None 值的列表转换为 numpy.array,以便将 None 替换为 numpy.nan

例如:

my_list = [3,5,6,None,6,None]

# My desired result: 
my_array = numpy.array([3,5,6,np.nan,6,np.nan]) 

天真的方法失败了:

>>> my_list
[3, 5, 6, None, 6, None]
>>> np.array(my_list)
array([3, 5, 6, None, 6, None], dtype=object) # very limited 
>>> _ * 2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'

>>> my_array # normal array can handle these operations
array([  3.,   5.,   6.,  nan,   6.,  nan])
>>> my_array * 2
array([  6.,  10.,  12.,  nan,  12.,  nan])

解决这个问题的最佳方法是什么?

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    您只需显式声明数据类型:

    >>> my_list = [3, 5, 6, None, 6, None]
    >>> np.array(my_list, dtype=np.float)
    array([  3.,   5.,   6.,  nan,   6.,  nan])
    

    【讨论】:

    • 我感觉我错过了一些简单的东西...谢谢
    • 这种方法的问题是它只适用于定义了nan的float而不适用于dtype int。
    • 请看我的问题stackoverflow.com/questions/30339214/…关于那个问题。
    • 很好的答案@Jaime!谢谢!它对我有用
    【解决方案2】:

    怎么样

    my_array = np.array(map(lambda x: numpy.nan if x==None else x, my_list))
    

    【讨论】:

    • 我会说 x is None 因为 == 可能更多 quirky
    猜你喜欢
    • 2021-09-21
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 2019-04-19
    相关资源
    最近更新 更多