首页 > 解决方案 > 如何在 np.void 的 ndarray 中有效地将毫秒偏移量转换为 np.datetime64

问题描述

好的,请耐心等待,我才刚刚开始使用 NumPy。

我有一个时间序列拆分多个文件。每个文件捕获一天的数据。每条记录中的时间字段只是自那天开始以来的毫秒数

现在我正在尝试使用 numpy 读取这些数据,但我无法将毫秒转换为np.datetime64.

到目前为止我有什么:

t_base = np.datetime64(<some_date>) 

dtype = np.dtype([
    ("t", "i4"),
    ...<other fields here>...
])
data = np.fromfile(filename, dtype)

这给了我一个一维ndarraynp.void。到目前为止,一切都很好。

我尝试了什么:

for record in np.nditer(data, op_flags["readwrite"]):
    record["t"] = t_base + np.timedelta64(int(record["t"]), "ms")

不幸的是,这不会改变类型。相反,它将构造的转换datetime64int32,这是不正确的,因为 int32 没有以毫秒为单位捕获时间的范围。那么如何以有效的方式完成这项工作呢?显然,转换后我不再需要毫秒偏移量。

或者,有没有办法fromfile将一个读int32int64类型?然后我可以使用int64as 时间戳而不是datetime64.

标签: pythonnumpy

解决方案


推荐阅读