首页 > 解决方案 > 写了一点时间增量函数,并希望将结果捕获为一个 numpy 数组

问题描述

我编写了一些代码,其中包含两个 data_dict 列表,一个包含开放时间,一个包含关闭时间。

函数找出这两个时间之间的差异并返回一个以小时 XX 小时为单位的数字。

如果列表中的打开和关闭时间格式不正确 (00:00:00),则函数返回“-1”。

它工作得很好,但是我希望能够捕获结果并将它们保存为一个 numpy 数组。

结果是这样打印的...

X
Y
Z
A
X
etc...

我对python非常陌生,只需要一些指导。

多谢你们。

opening_time_arr = data_dict['Open']
closing_time_arr = data_dict['Close']

if len(opening_time_arr) == len(closing_time_arr):
    resultTime = []
for idx, closing_time in enumerate(closing_time_arr):
    try:
        FORMAT = '%H:%M:%S'
        tdelta = datetime.strptime(closing_time, FORMAT) - datetime.strptime(opening_time_arr[idx], FORMAT)
        resultTime.append(tdelta)
        tdelta_h = tdelta.total_seconds()/3600
        print(tdelta_h)
    except ValueError:
        print('-1')

函数返回

8.0
8.5
6.5
7.5

等等......大约有250个条目。

如何获取这些数字并将它们转换为 numpy 数组,而无需像我的代码当前那样打印结果。

标签: pythonnumpydatetime

解决方案


奥利弗 - 我认为你真的很亲近!如果tdelta_h是以小时为单位的输出,那么这就是您要附加到resultTime. 在您的 for 循环完成后,您可以使用 将列表转换为 numpy 数组np.array(),然后打印出该数组以确保它看起来正常。

以下是我认为它应该看起来的样子:

import numpy as np
opening_time_arr = data_dict['Open']
closing_time_arr = data_dict['Close']

if len(opening_time_arr) == len(closing_time_arr):
    resultTime = []
for idx, closing_time in enumerate(closing_time_arr):
    try:
        FORMAT = '%H:%M:%S'
        tdelta = (datetime.strptime(closing_time, FORMAT) - datetime.strptime(opening_time_arr[idx], FORMAT))

        tdelta_h = tdelta.total_seconds()/3600
        resultTime.append(tdelta_h)

    except ValueError:
        resultTime.append(-1)

np.array(resultTime)
print(resultTime)

希望这可以帮助 :)


推荐阅读