从 unixtime 转换为 numpy.datetime64 的最快方法是什么?

发布于 2024-12-27 06:40:22 字数 54 浏览 0 评论 0原文

我认为这里的关键是减少中间转换的数量,但我无法在新的 Numpy 2.0 开发中找到简单的方法

I suppose that the key here is to have the less number of intermediate conversions but I'm not able to find a simple way in the new Numpy 2.0 dev

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

三生路 2025-01-03 06:40:22

实际上,numpy.datetime64 对象在内部基本上是 unix 时间(有 6 个额外的有效数字来说明毫秒精度)。您只需乘以 1e6 即可。

举个例子:

import numpy as np

# Generate a few unix time stamps near today...
x = np.arange(1326706251, 1326706260)

# Convert to datetimes...
x *= 1e6
x = x.view(np.datetime64)

print x

这会产生:

[2012-01-16 09:30:51 2012-01-16 09:30:52 2012-01-16 09:30:53
 2012-01-16 09:30:54 2012-01-16 09:30:55 2012-01-16 09:30:56
 2012-01-16 09:30:57 2012-01-16 09:30:58 2012-01-16 09:30:59]

Actually, numpy.datetime64 objects are basically unix times internally (with 6 extra significant digits to account for millisecond precision). You just need to multiply by 1e6.

As an example:

import numpy as np

# Generate a few unix time stamps near today...
x = np.arange(1326706251, 1326706260)

# Convert to datetimes...
x *= 1e6
x = x.view(np.datetime64)

print x

This yields:

[2012-01-16 09:30:51 2012-01-16 09:30:52 2012-01-16 09:30:53
 2012-01-16 09:30:54 2012-01-16 09:30:55 2012-01-16 09:30:56
 2012-01-16 09:30:57 2012-01-16 09:30:58 2012-01-16 09:30:59]
孤独患者 2025-01-03 06:40:22

从 NumPy 1.18 开始:

import numpy as np

timestamp = np.datetime64(1326706251, 's')
print(timestamp)

输出:

2012-01-16T09:30:51

As of NumPy 1.18:

import numpy as np

timestamp = np.datetime64(1326706251, 's')
print(timestamp)

Output:

2012-01-16T09:30:51
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文