Python:在数组中用NaN或均值替换-999值
我有一个这样的数组:
array[1,3,5,-999,3,1,6,8,-999,-999,-999,3,5,7]
其中的 -999 代表缺失的数据,我想把这个 -999 替换成它左右两个数字的平均值,或者直接用 NaN 代替。
在其他问题中,有人问怎么把 NaN 替换成零、平均值等等。而我这里问的是相反的,我想把一个数字替换成 NaN。
1 个回答
3
用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. ])