首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -以numpy datetime64格式获取当前时间

Python -以numpy datetime64格式获取当前时间
EN

Stack Overflow用户
提问于 2013-10-19 09:18:26
回答 4查看 23.4K关注 0票数 15

如何使用numpy datetime64获取当前日期和时间?

给定一个datetime64数组,其中每个元素都是numpy值,如何获得以秒为单位的差值?

EN

回答 4

Stack Overflow用户

发布于 2017-06-17 15:51:02

您也可以这样做来获取当前日期和时间:

代码语言:javascript
复制
import numpy as np 

np.datetime64('today') # today's date
np.datetime64('now') # timestamp right now 
票数 14
EN

Stack Overflow用户

发布于 2013-10-19 10:39:18

您可以使用datetime模块获取当前日期并将其传递给datetime64

代码语言:javascript
复制
import numpy as np
import datetime

current = np.datetime64(datetime.datetime.now())

现在您已经有了当前的datetime,我建议您查看numpy datetime64 documentation并按照提供的示例进行操作。timedelta64上的示例应该特别有帮助。

对于一个具体的示例,请考虑以下内容:

代码语言:javascript
复制
import numpy as np
import datetime

current = np.datetime64(datetime.datetime.now())
sample = [np.datetime64('2013-10-22T03:30Z'),
          np.datetime64('2013-10-22T04:40Z'),
          np.datetime64('2013-10-22T05:50Z')]
diff = [current-t for t in sample]
diffSec = [t.item().seconds for t in diff]

此代码会导致diffSec数组包含与当前时间和样本时间之间的秒数差

代码语言:javascript
复制
Out[2]: [1723, 1818, 1913]

解释:

  1. current首先使用datetime模块设置为当前时间。
  2. 创建一个样本数组,其中包含np.datetime64元素
  3. 样本元素是通过从当前时间减去np.timedelta64中的每个元素计算得出的。
  4. 对于diff中的每个时间增量,提取第二个差值并将其保存在新数组中diffSec

<代码>G215

显然,这些精确的结果是不可重现的,因为我正在使用当前时间来计算差值。

票数 6
EN

Stack Overflow用户

发布于 2014-12-28 17:11:05

假设您想要计算数组t1和标量t0之间的差异(它们可以是数组或标量):

代码语言:javascript
复制
In [1]: import numpy as np

In [2]: t1=np.arange('2001-01-01T00:00', '2001-01-01T00:05', dtype='datetime64')

In [3]: t1
Out[3]: 
array(['2001-01-01T00:00-0200', '2001-01-01T00:01-0200',
       '2001-01-01T00:02-0200', '2001-01-01T00:03-0200',
       '2001-01-01T00:04-0200'], dtype='datetime64[m]')

In [4]: t0=np.datetime64('2001-01-01T00:00:00')

In [5]: t0
Out[5]: numpy.datetime64('2001-01-01T00:00:00-0200')

在numpy中计算时间差的最好方法是使用timedelta64。在上面的示例中,t0以分钟为单位,t1以秒为单位。在计算时间差时,它们都将转换为较小的单位(秒)。您只需将它们相减即可创建一个timedelta64对象:

代码语言:javascript
复制
In [6]: t1-t0
Out[6]: array([  0,  60, 120, 180, 240], dtype='timedelta64[s]')

如果您希望响应为数字格式,请执行此操作

代码语言:javascript
复制
In [7]: (t1-t0).astype('int')
Out[7]: array([  0,  60, 120, 180, 240])

请注意,我从未使用for结构来扫描数组。它会因为阻止向量化而降低效率。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19461258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档