2014-03-14 2 views
-2

У меня есть массив с 8760 значениями. Я хочу рассчитать среднее значение для каждых 24 значений и вернуть средние значения 365 в виде массива. Это правильно или есть более простой способ сделать это?Вычислить средние значения из массива

temps = data['temperature'] #Fetching temperaturedata from dictionary 
temps_array = np.asarray(temps) #Converting temps list to array 
averages = daily_mean_temp(temps_array) #Running function that calculates mean 



def daily_mean_temp(hourly_temp): 
average_temps = [x.mean() for x in np.array_split(
    [float(x) for x in hourly_temp], 365)] #This is a list 
average_temps_array = np.asarray(average_temps) #Converting from list to array 
return average_temps_array #return array with mean values 
+0

Что не так с 'sum (mylist)/len (mylist)' для вычисления среднего числа списка? – Emmet

+0

@ Эммет: Я думаю, что это немного сложнее. – njzk2

+0

Хорошие ответы на это здесь: http://stackoverflow.com/questions/13728392/moving-average-or-running-mean – colcarroll

ответ

0

Для каждого дня 24 значения. Поэтому вы можете сделать что-то вроде:

average_temps_array = [sum(map(float, hourly_temp[i:i+24]))/24 
           for i in range(0, len(hourly_temp), 24)] 
+0

Спасибо! Только то, что мне нужно: D – user3297266