gpt4 book ai didi

python - 将日期时间存储在 numpy 数组中

转载 作者:行者123 更新时间:2023-11-28 21:40:07 26 4
gpt4 key购买 nike

假设我想在 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()

每当我这样做时,我都会收到以下错误:

float() argument must be a string or a number, not 'datetime.datetime'

有没有办法克服这个错误?

感谢您的帮助!

编辑:此外,现在我想执行以下操作,但似乎找不到解决方案:

 CPUtime = np.zeros((100), dtype='datetime64[s]')
for i in range(100):
Start = datetime.now()
CPUtime[i] = datetime.now()-Start

现在出现以下错误:

Could not convert object to NumPy datetime

最佳答案

正如错误消息中所指出的,我们需要在那里使用兼容的 dtype,float 不行。其中一个兼容的是 datetime64 并且我们还需要指定精度。假设我们需要 seconds。然后,数组初始化部分将是 -

Startmult = np.zeros((100), dtype='datetime64[s]')

列出了所有可用的时间单位here .

这是在 100 元素情况下运行的 nano-sec 运行示例,并使用第一个和最后一个输出元素进行验证 -

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')

编辑:如果您试图将两个时间点之间经过的秒数存储为 float 点数,您可以这样做 -

CPUtime = np.zeros((100))
for i in range(100):
Start = datetime.now()
time_diff = datetime.now()-Start
CPUtime[i] = time_diff.total_seconds()

对于 u-sec 精度,使用:time_diff.microseconds

关于python - 将日期时间存储在 numpy 数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45986625/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com