Преобразование массива, заполненного дельтами времени, в часы - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть полный массив timedeltas, который я хочу преобразовать в часы.

print(times_arr)

array([datetime.timedelta(seconds=28800),
       datetime.timedelta(seconds=30600),
       datetime.timedelta(seconds=23400),
       datetime.timedelta(seconds=27000),
       datetime.timedelta(seconds=23400),
       datetime.timedelta(seconds=23400),
       datetime.timedelta(seconds=30600),
       datetime.timedelta(seconds=23400),
       datetime.timedelta(seconds=27000),
       datetime.timedelta(seconds=23400),
       datetime.timedelta(seconds=30600),
       datetime.timedelta(seconds=27000),
       datetime.timedelta(seconds=23400),
       datetime.timedelta(seconds=23400),
       datetime.timedelta(seconds=30600),
       datetime.timedelta(seconds=28800),
       datetime.timedelta(seconds=23400)])

Кто-нибудь знает, как я могу преобразовать этот массив в часы, чтобы массив [(8, 8.56 и т. Д ..

Я перепробовал все, что умею. Я новичок в Python. Спасибо

Ответы [ 3 ]

1 голос
/ 11 апреля 2019

Преобразуйте в timedelta64[m] dtype, затем перейдите оттуда:

arr.astype('timedelta64[m]').astype(int) / 60
# array([8. , 8.5, 6.5, 7.5, 6.5, 6.5, 8.5, 6.5, 7.5, 6.5, 8.5, 7.5, 6.5,
#        6.5, 8.5, 8. , 6.5])
0 голосов
/ 11 апреля 2019

Попробуйте это.

from datetime import datetime,timedelta
print(datetime.strptime(str(timedelta(seconds=30600)),'%H:%M:%S').strftime('%H.%M'))

08.30
0 голосов
/ 11 апреля 2019

Вы можете разделить общее количество секунд в каждой временной шкале на 3600, чтобы получить желаемый результат.

new = np.array([delta.total_seconds() / 3600 for delta in times_array])
...