如何有效地将毫秒偏移量转换为np.datetime64在一系列的np.无效

2024-03-28 20:10:05 发布

您现在位置:Python中文网/ 问答频道 /正文

好吧,听我说,我才刚开始用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")

不幸的是,这并没有改变类型。相反,它将构造的datetime64转换回int32,这是不正确的,因为int32没有以毫秒为单位捕获时间的范围。那么我该如何高效地完成这项工作呢?显然,在转换之后,我不再需要毫秒偏移量了。你知道吗

或者,有没有办法用fromfileint32读入int64类型?然后我可以使用int64作为时间戳,而不是datetime64。你知道吗


Tags: 文件数据numpy类型databasenp时间