2016-02-24 3 views
2

Я хотел бы получить среднее значение следующих дат. Я думал о преобразовании всех данных в секунды и затем их усреднении. Но, вероятно, лучший способ это сделать.Средняя вычисляемая сумма массивов

date = ['2016-02-23 09:36:26', '2016-02-24 10:00:32', '2016-02-24 11:28:22', '2016-02-24 11:27:20', '2016-02-24 11:24:15', '2016-02-24 11:20:25', '2016-02-24 11:17:43', '2016-02-24 11:12:03', '2016-02-24 11:09:11', '2016-02-24 11:08:44', '2016-02-24 11:05:28', '2016-02-24 11:03:23', '2016-02-24 10:58:08', '2016-02-24 10:53:59', '2016-02-24 10:49:34', '2016-02-24 10:43:33', '2016-02-24 10:35:27', '2016-02-24 10:31:50', '2016-02-24 10:31:17', '2016-02-24 10:30:05', '2016-02-24 10:29:21'] 

Скверный решение:

import datetime 
import time 
import numpy as np 

date = ['2016-02-23 09:36:26', '2016-02-24 10:00:32', '2016-02-24 11:28:22', '2016-02-24 11:27:20', '2016-02-24 11:24:15', '2016-02-24 11:20:25', '2016-02-24 11:17:43', '2016-02-24 11:12:03', '2016-02-24 11:09:11', '2016-02-24 11:08:44', '2016-02-24 11:05:28', '2016-02-24 11:03:23', '2016-02-24 10:58:08', '2016-02-24 10:53:59', '2016-02-24 10:49:34', '2016-02-24 10:43:33', '2016-02-24 10:35:27', '2016-02-24 10:31:50', '2016-02-24 10:31:17', '2016-02-24 10:30:05', '2016-02-24 10:29:21'] 
sec = [time.mktime(datetime.datetime.strptime(d, "%Y-%m-%d %H:%M:%S").timetuple()) for d in date] 
mean = datetime.datetime.fromtimestamp(np.mean(sec)) 
print(mean) 
+0

Я хотел бы сделать именно так, как вы предложили. – ppaulojr

+0

Я согласен с @ppaulojr. Преобразуйте их в единицы и усредните их. – Matt

+0

Взгляните на этот вопрос http://stackoverflow.com/questions/19681703/average-time-for-datetime-list – ppaulojr

ответ

4

В NumPy все datetime64[s] с внутренне представлена ​​8-байтовых целых чисел. Интерс представляет количество секунд с момента Эпохи.

Таким образом, вы могли бы преобразовать date список в массив NumPy из datetime64[s] DTYPE, рассматривают его как DTYPE i8 (8 байт Интс), взять среднее, а затем преобразовать Int обратно в datetime64[s].


import numpy as np 

date = ['2016-02-23 09:36:26', '2016-02-24 10:00:32', '2016-02-24 11:28:22', '2016-02-24 11:27:20', '2016-02-24 11:24:15', '2016-02-24 11:20:25', '2016-02-24 11:17:43', '2016-02-24 11:12:03', '2016-02-24 11:09:11', '2016-02-24 11:08:44', '2016-02-24 11:05:28', '2016-02-24 11:03:23', '2016-02-24 10:58:08', '2016-02-24 10:53:59', '2016-02-24 10:49:34', '2016-02-24 10:43:33', '2016-02-24 10:35:27', '2016-02-24 10:31:50', '2016-02-24 10:31:17', '2016-02-24 10:30:05', '2016-02-24 10:29:21'] 

mean = (np.array(date, dtype='datetime64[s]') 
     .view('i8') 
     .mean() 
     .astype('datetime64[s]')) 

print(mean) 

печатает

2016-02-24T09:43:40-0500 
Смежные вопросы