Python:替换数组中的 NaN 或 MEAN 而不是 -999 值[重复]

Posted

技术标签:

【中文标题】Python:替换数组中的 NaN 或 MEAN 而不是 -999 值[重复]【英文标题】:Python: Replacing NaN or MEAN instead of a -999 value in an array [duplicate] 【发布时间】:2014-05-22 19:02:47 【问题描述】:

我有一个这样的数组

array[1,3,5,-999,3,1,6,8,-999,-999,-999,3,5,7]

-999 数字代表缺失数据,我想将这个 -999 替换为左右数字的平均值或替换为 NaN

在另一个问题中,要求将 nan 替换为零、均值等。这里我要求相反,我想用 nan 替换一个数字

【问题讨论】:

你想在不考虑-999数字的情况下取数组的平均值吗? 【参考方案1】:

替换为 nan:

A = np.array([1,3,5,-999,3,1,6,8,-999,-999,-999,3,5,7.])
A[A==-999] = np.nan

结果:

array([  1.,   3.,   5.,  nan,   3.,   1.,   6.,   8.,  nan,  nan,  nan, 3.,   5.,   7.])

如果不是这样,您想取 -999 值左右的数字的平均值:

A = np.array([1,3,5,-999,3,1,6,8,-999,-999,-999,3,5,7.])
A[A==-999] = np.nan
mask = np.isnan(A)
A[mask] = np.interp(np.flatnonzero(mask), np.flatnonzero(~mask), A[~mask])

结果:

array([ 1.  ,  3.  ,  5.  ,  4.  ,  3.  ,  1.  ,  6.  ,  8.  ,  6.75, 5.5 ,  4.25,  3.  ,  5.  ,  7.  ])

【讨论】:

A[A==-999]=(A[(A==-999)-1]+A[(A==-999)+1])/2。 ValueError:NumPy 布尔数组索引分配无法将 14 个输入值分配给掩码为 true 的 4 个输出值 @sabbahillel 是的 - 更新了答案,现在可以使用了 谢谢你,它工作得很好!!!

以上是关于Python:替换数组中的 NaN 或 MEAN 而不是 -999 值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

用 nan 替换 NumPy 整数数组中的零

用滚动平均值或其他插值替换 NaN 或缺失值

根据 NaN 将列值替换为 0 或 1 [重复]

如何迭代或递归确定二维数组中的邻居?

如何用熊猫(python)中的其他值替换NAN [重复]

输入包含 NaN、无穷大或值太大.. 使用 gridsearchcv 时,评分 = 'neg_mean_squared_log_error'