我想在 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())
但是,代码返回此错误:
Unknown attribute 'NPDatetime' of type Module(<module 'numba.types' from '/home/xxx/anaconda3/lib/python3.6/site-packages/numba/types/__init__.py'>)
我的numba版本是0.39.0
最佳答案
编辑:
我必须纠正自己,numba 支持 numpy.empty()
和 datetime64
:
Numba supports the following Numpy scalar types: [...] Datetimes and timestamps: of any unit [...]
Source: Section 2.7.1
numpy.empty()
(only the 2 first arguments)
Source: Section 2.7.3.3
不知道是什么导致了您的问题。
您错误地指定了 dtype
参数。 Numpy 不为此使用 numba 类。以下是正确指定 dtype
的方法:(阅读更多 here 和 here )
dtype="datetime64[D]"
但即使您以这种方式指定参数,它也不会起作用。 @nb.jit()
的 nopython
参数本身不支持该类型。这是更正后的代码:(阅读更多 here )
import numba as nb
import numpy as np
@nb.jit
def xxx():
return np.empty(10, dtype="datetime64[D]")
print(xxx())
但是考虑给 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())
关于python - 在 Numba 中创建日期数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51938898/