print ' standard deviation:', weekly_data.std(axis=1) print # Bonus Bonus : this is really tricky... # compute the month number for each day in the dataset months = (wind_data[:,0]-61)*12 + wind_data[:,1] - 1 # find the indices for the start of each month # this is a useful trick - we use range from 0 to the # number of months + 1 and searchsorted to find the insertion # points for each. month_indices = searchsorted(months, arange(months[-1]+2)) # now use add.reduceat to get the sum at each location monthly_loc_totals = add.reduceat(data, month_indices[:-1]) # now use add to find the sum across all locations for each month monthly_totals = monthly_loc_totals.sum(axis=1) # now find total number of measurements for each month month_days = month_indices[1:] - month_indices[:-1] measurement_count = month_days*12 # compute the mean monthly_means = monthly_totals/measurement_count print "Bonus Bonus" print " mean:", monthly_means # Notes: this method relies on the fact that the months are contiguous in the
print(' standard deviation:', weekly_data.std(axis=1)) print() # Bonus Bonus : this is really tricky... # compute the month number for each day in the dataset months = (wind_data[:, 0] - 61) * 12 + wind_data[:, 1] - 1 # find the indices for the start of each month # this is a useful trick - we use range from 0 to the # number of months + 1 and searchsorted to find the insertion # points for each. month_indices = searchsorted(months, arange(months[-1] + 2)) # now use add.reduceat to get the sum at each location monthly_loc_totals = add.reduceat(data, month_indices[:-1]) # now use add to find the sum across all locations for each month monthly_totals = monthly_loc_totals.sum(axis=1) # now find total number of measurements for each month month_days = month_indices[1:] - month_indices[:-1] measurement_count = month_days * 12 # compute the mean monthly_means = monthly_totals / measurement_count print("Bonus Bonus") print(" mean:", monthly_means) # Notes: this method relies on the fact that the months are contiguous in the