我有一个充满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的新手。谢谢
答案 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