tat*_*ler 3 python datetime numpy python-3.x
假设我想在一个 numpy 数组中存储超过 100 次 for 循环迭代的日期时间值,如下所示:
import numpy as np
import time
from datetime import datetime
Startmult = np.zeros((1,100))
for i in range(100):
Startmult[i] = datetime.now()
Run Code Online (Sandbox Code Playgroud)
每当我这样做时,我都会收到以下错误:
float() argument must be a string or a number, not 'datetime.datetime'
Run Code Online (Sandbox Code Playgroud)
有没有办法克服这个错误?
感谢您的帮助!
编辑:另外,现在我想执行以下操作,但似乎找不到解决方案:
CPUtime = np.zeros((100), dtype='datetime64[s]')
for i in range(100):
Start = datetime.now()
CPUtime[i] = datetime.now()-Start
Run Code Online (Sandbox Code Playgroud)
现在得到以下错误:
Could not convert object to NumPy datetime
Run Code Online (Sandbox Code Playgroud)
正如错误消息中所指出的,我们需要在那里使用兼容的 dtype,float这是不行的。兼容的其中之一是datetime64,我们还需要指定精度。假设我们想要 for seconds。然后,数组初始化部分将是 -
Startmult = np.zeros((100), dtype='datetime64[s]')
Run Code Online (Sandbox Code Playgroud)
列出了所有可用的时间单位here。
这是nano-sec在100元素上运行并验证第一个和最后一个输出元素的示例运行-
In [447]: Startmult = np.zeros((100), dtype='datetime64[ns]')
...: for i in range(100):
...: Startmult[i] = datetime.now()
...:
In [448]: Startmult[0] # first element
Out[448]: numpy.datetime64('2017-08-31T22:39:45.722306000')
In [449]: Startmult[-1] # last element
Out[449]: numpy.datetime64('2017-08-31T22:39:45.723201000')
Run Code Online (Sandbox Code Playgroud)
编辑:如果您尝试将两个时间点之间经过的秒数存储为浮动 pt 数字,您可以执行以下操作 -
CPUtime = np.zeros((100))
for i in range(100):
Start = datetime.now()
time_diff = datetime.now()-Start
CPUtime[i] = time_diff.total_seconds()
Run Code Online (Sandbox Code Playgroud)
为u-sec精确起见,请使用 : time_diff.microseconds。
| 归档时间: |
|
| 查看次数: |
8233 次 |
| 最近记录: |