如何使用numpy datetime64获取当前日期和时间?
给定一个numpy数组,其中每个元素都是datetime64值,如何以秒为单位得到差异?
答案 0 :(得分:9)
您也可以这样做以获取当前日期和时间:
import numpy as np
np.datetime64('today') # today's date
np.datetime64('now') # timestamp right now
答案 1 :(得分:6)
您可以使用datetime模块获取当前日期并将其传递给datetime64
import numpy as np
import datetime
current = np.datetime64(datetime.datetime.now())
现在你有了当前的日期时间我会建议查看numpy datetime64 documentation并按照提供的示例进行操作。 timedelta64上的示例应该特别有用。
有关具体示例,请考虑以下事项:
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数组包含从当前时间到采样时间的不同秒数
Out[2]: [1723, 1818, 1913]
<强>阐释:强>
显然,这些确切的结果是不可重复的,因为我使用当前时间来计算差异。
答案 2 :(得分:0)
假设您要计算数组t1
和标量t0
之间的差异(它们可以是数组或标量):
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对象:
In [6]: t1-t0
Out[6]: array([ 0, 60, 120, 180, 240], dtype='timedelta64[s]')
如果您希望以数字格式回复,请执行
In [7]: (t1-t0).astype('int')
Out[7]: array([ 0, 60, 120, 180, 240])
请注意,我从未使用for
结构来扫描数组。它会通过阻止矢量化来削弱效率。
答案 3 :(得分:0)
在指定时间内最后提供Z时间为Zulu格式。 这在python numpy库中已被弃用。 (关于Github的问题:https://github.com/pandas-dev/pandas/issues/12100)。
In [1]: import numpy as np
In [2]: import datetime
对于当前日期,您可以使用:
In [3]: current = np.datetime64(datetime.datetime.now())
如果您尝试根据时区更改时间, 例如:
In [3]: previous_date = np.datetime64('2011-01-01T00:00:00-0530')
OR
In [3]: previous_date = np.datetime64('2011-01-01T00:00:00Z')
然后你会得到一个DeprecationWarning。如果您正在使用已弃用的版本,则可以使用以下代码
In [3]: delta = np.timedelta64(5,'h')
In [4}: previous_date = np.datetime64('2011-01-01T00:00:00') + delta