如何替换数组中的NaN值,如果执行操作则为零,结果而不是NaN值为零操作
0/0 = NaN可以用0替换
答案 0 :(得分:9)
如果你有Python 2.6,你可以使用math.isnan()
函数来查找NaN
值。
有了这个,我们可以使用列表推导来替换列表中的NaN
值,如下所示:
import math
mylist = [0 if math.isnan(x) else x for x in mylist]
如果你有Python 2.5,我们可以使用this question中的NaN != NaN
技巧,所以你这样做:
mylist = [0 if x != x else x for x in mylist]
答案 1 :(得分:3)
import numpy
a=numpy.array([1,2,3,'NaN',4])
s=numpy.isnan(a)
a[s]=0.0
答案 2 :(得分:0)
还有一个熊猫解决方案。
import pandas as pd
mylist = [2.3, pd.NA, 1.1, 0.7]
mylist = [0 if pd.isna(x) else x for x in mylist]