# 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.