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())
但是,代码返回此错误:
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
解决方案
编辑:
我必须纠正自己,numpy.empty()
并且datetime64
都得到 numba 的支持:
Numba 支持以下 Numpy 标量类型:[...] 日期时间和时间戳:任何单位的 [...]
来源:第 2.7.1 节
numpy.empty()
(只有 2 个第一个参数)
来源:第 2.7.3.3 节
不知道是什么导致了你的问题。
您错误地指定了dtype
参数。Numpy 不使用 numba 类。以下是dtype
正确指定的方法:(在此处和此处阅读更多信息)
dtype="datetime64[D]"
但即使你以这种方式指定参数,它也不起作用。的nopython
参数@nb.jit()
本身并不支持该类型。这是更正的代码:(在这里阅读更多)
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())
推荐阅读
- c++ - 将 wxWidgets 与 CMAKE 和 Visual Studio 一起使用
- javascript - 我如何让传单的地理位置工作?
- terraform - Terraform AWS 仪表板 - 嵌套列表中的小部件
- c++ - 在 C++ 中使用变量将动态文本添加到 WM_CREATE
- arrays - 为什么整数数组中的一个值取消引用c中的随机值?
- opengl - 如何检测相机是否看不到它的目标?
- amazon-web-services - 使用 AWS Glue 的 S3 写入并发
- javascript - 我正在使用 dygraphs 1.1.1 并且颜色数组不起作用
- javascript - 如何确保在使用 puppeteer 提交之前等待文件完成上传?
- swift - 列表剪辑问题(SwiftUI 的错误?)