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

ylamdve6  于 2022-11-10  发布在  其他
关注(0)|答案(4)|浏览(159)

我有一个满是时间增量的稀疏数组,因为我希望能够将它们转换为小时。

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还是个新手。谢谢

mzillmmw

mzillmmw1#

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

jdzmm42g2#

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

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

xwmevbvl3#

尝尝这个。

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

08.30
daolsyd0

daolsyd04#

使用arr.astype('timedelta64[s]').astype("int64")/3600而不是arr.astype('timedelta64[m]').astype(int) / 60,这会导致秒的“丢失”。

相关问题