interpolate nan values
Linear interpolation for nan values between two existing values.
For leading / trailing nan values, they are forward / backward filled.
a = np.array([np.nan, 1,2,np.nan, 4, np.nan, 3, np.nan])
def interpolate_nans(array):
nans = np.isnan(array)
x = np.array(range(len(array)))
array[nans] = np.interp(x=x[nans], xp=x[~nans], fp=array[~nans])
return array
interpolate_nans(a)
[np.nan, 1,2,np.nan, 4, np.nan, 3, np.nan] ---> [1. , 1. , 2. , 3. , 4. , 3.5, 3. , 3. ]