Calculate moving average in numpy array with NaNs
I am trying to calculate the moving average in a large numpy array that contains NaNs. Currently I am using: import numpy as np def moving_average(a,n=5): ret = np.cumsum(a,dtype=float) ret[n:] = ret[n:]-ret[:-n] return ret[-1:]/n When calculating with a masked array: x = np.array([1.,3,np.nan,7,8,1,2,4,np.nan,np.nan,4,4,np.nan,1,3,6,3]) mx = np.ma.masked_array(x,np.isnan(x)) y = moving_average(mx).filled(np.nan) print y >>> array([3.8,3.8,3.6,nan,nan,nan,2,2.4,nan,nan,nan,2.8,2.6]) The result I am looking for (below) should ideally have NaNs only in the place where the original array, x, had