python - 在 Numba 中创建日期数组?

标签 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

最佳答案

编辑: 我必须纠正自己,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 的方法:(阅读更多 herehere )

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/

相关文章:

python - 为什么 scipy 线性插值比最近邻插值运行得更快?

python - 使用 Numpy 和 Numba 将值数组合并到离散集中最接近的值

python - numba - 打字错误 : cannot determine Numba type of <class 'builtin_function_or_method' >

arrays - 无法修改作为循环参数传递的 1d numpy 数组

python - @jit 减速功能

python - 关闭 tkinter 窗口和消息框错误窗口

python - 如何在Python中定义哈希函数

python - 我怎样才能使这段代码运行得更快? (在大语料库中搜索大词)

python - 合并后的xls输出不同