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、无穷大或值太大.. 使用 gridsearchcv 时,评分 = 'neg_mean_squared_log_error'