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

时间:2014-04-09 13:58:21

标签: python numpy nan mean missing-data

我有一个像这样的数组

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

-999号码代表缺失的数据,我希望用左右数字的平均值替换-999或用NaN代替

在另一个问题中请求替换为零,意味着等等。在这里我要求对面,我想用南方替换一个数字

1 个答案:

答案 0 :(得分:2)

由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.  ])