【发布时间】: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 数组与常规数值数组完全不同。