【问题标题】:Convert numpy array full of time deltas to hours将充满时间增量的numpy数组转换为小时
【发布时间】:2019-04-11 05:46:09
【问题描述】:

我有一个充满时间增量的 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)])

有谁知道如何将这个数组转换为小时数,所以数组[(8, 8.56 etc..

我已经尝试了所有我知道的方法。我是 python 新手。谢谢

【问题讨论】:

    标签: python numpy timedelta


    【解决方案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])
    

    【讨论】:

      【解决方案2】:

      您可以将每个 timedelta 中的总秒数除以 3600 以获得所需的输出。

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

      【讨论】:

        【解决方案3】:

        试试这个。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-03-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-16
          • 1970-01-01
          相关资源
          最近更新 更多