我有一个带有NaN且没有NaNs值的1d Numpy数组:
arr = np.array([4, np.nan, np.nan, 3, np.nan, 5])
我需要将NaN值替换为以前的no-NaN值,并用NaN替换no-NaN值,如下所示:
result = np.array([np.nan, 4, 4, np.nan, 3, 5])
提前致谢。
托马索
如果Pandas可用,则可以使用ffill()
,然后使用布尔掩码替换原始的非Nan值:
import pandas
arr2 = pd.Series(arr).ffill()
mask = ~np.isnan(arr) # all elements which started non-NaN
mask[-1] = False # last element will never forward-fill
arr2[mask] = np.nan # replace non-NaNs with NaNs
输出:
arr2
0 NaN
1 4.0
2 4.0
3 NaN
4 3.0
5 5.0
dtype: float64
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句