我有一个像这样的数组
array[1,3,5,-999,3,1,6,8,-999,-999,-999,3,5,7]
-999号码代表缺失的数据,我希望用左右数字的平均值替换-999或用NaN代替
在另一个问题中请求替换为零,意味着等等。在这里我要求对面,我想用南方替换一个数字
答案 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. ])