我想在 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
编辑:
我要纠正自己,都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)
| 归档时间: |
|
| 查看次数: |
823 次 |
| 最近记录: |