【问题标题】:Maintaining NaN value when going from python list to numpy array?从 python 列表到 numpy 数组时保持 NaN 值?
【发布时间】:2021-08-13 03:21:25
【问题描述】:

在我的代码中,我必须从一个大的嵌套列表(python 列表的 python 列表)开始,并且在每个子列表中,一些条目可能是 numpy 值 NaN。当我创建这个嵌套列表时,它看起来像这样:

import numpy as np
nested_list = [[np.nan, 19], ['a', np.nan]]
>>> print(nested_list)
[[nan, 19], ['a', nan]]

我希望当我评估子列表的 NaN 元素与自身的相等性时,我应该得到 False,因为它是我所做的空值:

>>>print(nested_list[1][1] == nested_list[1][1])
False

现在,我想把这个嵌套列表变成一个 2d numpy 数组,但是当我这样做时,NaN 值只是变成字符串并且不保留它们的空值:

arr = np.array(list_of_lists)
>>>print(arr)
[['nan' '19']
 ['a' 'nan']]
>>>print(arr[1][1] == arr[1][1])
True

如何防止 NaN 变成字符串?

【问题讨论】:

  • 为什么要一个 numpy 数组?为什么不坚持使用列表,其中混合类型是很自然的。
  • @hpaulj 当我正在处理的对象从一开始就是一个 numpy 数组时,我已经编写了一些以前的代码,但是我现在编写的代码需要我从一个列表开始,所以我想要转换回代码已经知道如何处理的内容。
  • 请注意,对象 dtype 数组与常规数值数组完全不同。

标签: python arrays numpy


【解决方案1】:

你可以这样做

import numpy as np

nested_list = [[np.nan, 19], ['a', np.nan]]
np.array(nested_list, dtype='object')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 2014-01-27
    • 2013-10-27
    相关资源
    最近更新 更多