在 Numba 中创建日期数组?

Gin*_*ger 2 python numba

我想在 Numba 函数中创建一个日期数组,以 nopython 模式运行。

我看不到日期类型,所以我正在尝试 NPDatetime。

我尝试的代码是:

import numba as nb
import numpy as np


@nb.jit(nopython=True)
def xxx():
    return np.empty(10, dtype=nb.types.NPDatetime('D'))


print(xxx())
Run Code Online (Sandbox Code Playgroud)

但是,代码返回此错误:

Unknown attribute 'NPDatetime' of type Module(<module 'numba.types' from '/home/xxx/anaconda3/lib/python3.6/site-packages/numba/types/__init__.py'>)
Run Code Online (Sandbox Code Playgroud)

我的 numba 版本是 0.39.0

asy*_*nts 5

编辑: 我要纠正自己,都numpy.empty()datetime64通过numba支持:

Numba 支持以下 Numpy 标量类型:[...] 日期时间和时间戳:任何单位的 [...]
来源:第 2.7.1 节

numpy.empty()(仅 2 个第一个参数)
来源:第 2.7.3.3 节

不知道是什么导致了您的问题。


dtype错误地指定了参数。Numpy 不使用 numba 类。以下是dtype正确指定的方法:(在此处此处阅读更多信息

dtype="datetime64[D]"
Run Code Online (Sandbox Code Playgroud)

但即使您以这种方式指定参数,它也不起作用。的nopython参数@nb.jit()本身不支持该类型。这是更正后的代码:(在这里阅读更多)

import numba as nb
import numpy as np

@nb.jit
def xxx():
  return np.empty(10, dtype="datetime64[D]")

print(xxx())
Run Code Online (Sandbox Code Playgroud)

但是考虑给 numba 一个类型提示:

import numba as nb
import numpy as np

@nb.jit(nb.types.NPDatetime('D')()) # returns datatime, no arguments
def xxx():
  return np.empty(10, dtype="datetime64[D]")

print(xxx())
Run Code Online (Sandbox Code Playgroud)