# spacepy.toolbox.windowMean

`spacepy.toolbox.``windowMean`(data, time=[], winsize=0, overlap=0, st_time=None, op=<function mean>)

  Windowing mean function, window overlap is user defined

  Parameters: | data : array_like 1D series of points time : list (optional) series of timestamps, optional (format as numeric or datetime) For non-overlapping windows set overlap to zero. winsize : integer or datetime.timedelta (optional) window size overlap : integer or datetime.timedelta (optional) amount of window overlap st_time : datetime.datetime (optional) for time-based averaging, a start-time other than the first point can be specified op : callable (optional) the operator to be called, default numpy.mean
  Returns: | out : tuple the windowed mean of the data, and an associated reference time vector

  Examples

  For non-overlapping windows set overlap to zero. e.g. (time-based averaging) Given a data set of 100 points at hourly resolution (with the time tick in the middle of the sample), the daily average of this, with half-overlapping windows is calculated:

      >>> import spacepy.toolbox as tb
      >>> from datetime import datetime, timedelta
      >>> wsize = datetime.timedelta(days=1)
      >>> olap = datetime.timedelta(hours=12)
      >>> data = [10, 20]*50
      >>> time = [datetime.datetime(2001,1,1) + datetime.timedelta(hours=n, minutes = 30) for n in range(100)]
      >>> outdata, outtime = tb.windowMean(data, time, winsize=wsize, overlap=olap, st_time=datetime.datetime(2001,1,1))
      >>> outdata, outtime
      ([15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0],
       [datetime.datetime(2001, 1, 1, 12, 0),
        datetime.datetime(2001, 1, 2, 0, 0),
        datetime.datetime(2001, 1, 2, 12, 0),
        datetime.datetime(2001, 1, 3, 0, 0),
        datetime.datetime(2001, 1, 3, 12, 0),
        datetime.datetime(2001, 1, 4, 0, 0),
        datetime.datetime(2001, 1, 4, 12, 0)])

  When using time-based averaging, ensure that the time tick corresponds to the middle of the time-bin to which the data apply. That is, if the data are hourly, say for 00:00-01:00, then the time applied should be 00:30. If this is not done, unexpected behaviour can result.

  e.g. (pointwise averaging),

      >>> outdata, outtime = tb.windowMean(data, winsize=24, overlap=12)
      >>> outdata, outtime
      ([15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0], [12.0, 24.0, 36.0, 48.0, 60.0, 72.0, 84.0])

  where winsize and overlap are numeric, in this example the window size is 24 points (as the data are hourly) and the overlap is 12 points (a half day). The output vectors start at winsize/2 and end at N-(winsize/2), the output time vector is basically a reference to the nth point in the original series.

  note This is a quick and dirty function - it is NOT optimized, at all.