Others can correct me, but I believe it's normalizing to the mid point of the interval. July 2nd is the halfway point in the year just as the next section new_date.append(datetime.datetime(year=year, month=month, day=15)) the 15th is more or less the middle of the month when the unit is monthly.
On Fri, Feb 26, 2016 at 11:28 AM, Ibrahim Jarif <[email protected]> wrote: > Why does the following function > > ================================================================== > def _rcmes_calc_average_on_new_time_unit(data, dates, unit): > """ Rebin 3d array and list of dates using the provided unit parameter > > :param data: Input data that needs to be averaged > :type data: 3D masked numpy array of shape (times, lats, lons) > :param dates: List of dates that correspond to the given data values > :type dates: Python datetime objects > :param unit: Time unit to average the data into > :type unit: String matching one of these values : full | annual | > monthly | daily > > :returns: meanstorem, newTimesList > :rtype: 3D numpy masked array the same shape as the input array, list > of python datetime objects > """ > > # Check if the user-selected temporal grid is valid. If not, EXIT > acceptable = > (unit=='full')|(unit=='annual')|(unit=='monthly')|(unit=='daily') > if not acceptable: > print 'Error: unknown unit type selected for time averaging: EXIT' > return -1,-1,-1,-1 > > nt, ny, nx = data.shape > if unit == 'full': > new_data = ma.mean(data, axis=0) > new_date = [dates[dates.size/2]] > if unit == 'annual': > years = [d.year for d in dates] > years_sorted = np.unique(years) > new_data = ma.zeros([years_sorted.size, ny, nx]) > it = 0 > new_date = [] > for year in years_sorted: > index = np.where(years == year)[0] > new_data[it,:] = ma.mean(data[index,:], axis=0) > new_date.append(datetime.datetime(year=year, month=7, day=2)) > it = it+1 > > ======================================= > have new_date.append(datetime.datetime(year=year, month=7, day=2) ? > Shouldn't it be datetime(year=year, month=1, day=1) ? >
