I have a 1-d numpy array which I would like to downsample. Any of the following methods are acceptable if the downsampling raster doesn't perfectly fit the data:
- overlap downsample intervals
- convert whatever number of values remains at the end to a separate downsampled value
- interpolate to fit raster
basically if I have
1 2 6 2 1
and I am downsampling by a factor of 3, all of the following are ok:
3 3
3 1.5
or whatever an interpolation would give me here.
I'm just looking for the fastest/easiest way to do this.
I found scipy.signal.decimate
, but that sounds like it decimates the values (takes them out as needed and only leaves one in X). scipy.signal.resample
seems to have the right name, but I do not understand where they are going with the whole fourier thing in the description. My signal is not particularly periodic.
Could you give me a hand here? This seems like a really simple task to do, but all these functions are quite intricate...
In the simple case where your array's size is divisible by the downsampling factor (
R
), you canreshape
your array, and take the mean along the new axis:In the general case, you can pad your array with
NaN
s to a size divisible byR
, and take the mean usingscipy.nanmean
.If array size is not divisible by downsampling factor (R), reshaping (splitting) of array can be done using np.linspace followed by mean of each subarray.