将充满时间增量的numpy数组转换为小时

时间:2019-04-11 05:46:10

标签: python numpy timedelta

我有一个充满timedelta的numpy数组,我希望能够将它们转换为小时。

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)])

有人知道我如何将这个数组转换为小时,所以array [(8,8.56等。

我已经尽力了。我是python的新手。谢谢

3 个答案:

答案 0 :(得分:1)

转换为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])

答案 1 :(得分:0)

您可以将每个时间增量中的总秒数除以3600,以获得所需的输出。

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

答案 2 :(得分:0)

尝试一下。

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

08.30