Skip to main content
 首页 » 编程设计

python之用 numpy.nan 替换列表中的所有 0

2025年05月04日16qq78292959

我有一个包含 0 的列表,我想将其更改为 np.nan 以进行计算。我正在尝试执行仅替换前 0 的以下操作:

l = [0,2,3,4,0] 
l[l == 0] = np.nan 
print l 
[nan,2,3,4,0] 

有没有办法对列表中的每一项进行这种替换?

请您参考如下方法:

您不能使用 numpy 向量 bool 索引或与 Python 列表进行比较,因此您的 l == 0 只是给您 0。这只是侥幸,它甚至部分起作用,因为您发生了以 0 作为第一个元素。

>>> l = [0,2,3,4,0] 
>>> l == 0 
False 
>>> int(l == 0) 
0 
>>> l[l == 0] = 999 
>>> l 
[999, 2, 3, 4, 0] 

您可以使用列表理解和三元:

>>> l = [0,2,3,4,0] 
>>> l = [np.nan if x == 0 else x for x in l] 
>>> l 
[nan, 2, 3, 4, nan] 

(如果您使用的是 numpy 数组,则向量比较和赋值会有效,但您不能将整数和 float (例如 np.nan)混合得太好。)