Разница во времени в секундах от numpy.timedelta64

Как получить разницу во времени в секундах от переменной numpy.timedelta64?

time1 = '2012-10-05 04:45:18'
time2 = '2012-10-05 04:44:13'
dt = np.datetime64(time1) - np.datetime64(time2)
print dt

0:01:05

Я хотел бы преобразовать dt в число (int или float), представляющее разницу во времени в секундах.

Ответ 1

Вы можете получить к нему доступ через "завернутый" элемент datetime:

>>> dt.item().total_seconds()
65.0

Объяснение: здесь dt - это скалярный массив в numpy, который является массивом нулевого ранга или 0-мерным массивом. Таким образом, вы обнаружите, что dt здесь также имеет все методы, которыми обладает ndarray, и вы можете сделать, например, dt.astype('float'). Но он оборачивает объект python, в данном случае объект datetime.timedelta.

Чтобы получить оригинальный скаляр, вы можете использовать dt.item(). Чтобы проиндексировать скаляр массива, вы можете использовать несколько странный синтаксис getitem, используя пустой кортеж:

>>> dt[()]
array(datetime.timedelta(0, 65), dtype='timedelta64[s]')

Это должно работать во всех версиях numpy, но если вы используете numpy v1. 7+, может быть, лучше использовать новый API numey datetime напрямую, как объяснено в ответе JF Sebastien здесь.