【发布时间】:2021-02-15 09:02:03
【问题描述】:
我有一个函数正在做一些计算,并且在某个时刻正在调用另一个函数。例如,主函数是这样的:
import numba
@numba.njit(some signature here)
def my_funct():
...
value = cosd(angle)
由于函数cosd在另一个用numba.njit装饰的函数中,它也必须被装饰,在我的例子中是:
from numba import float64
@numba.njit(float64(float64))
def cosd(angle):
return np.cos(np.radians(angle))
我现在的问题是在另一个函数中,输入值angle 是一个数组,相关的输出也是一个数组。我知道我可以将我的函数装饰为@numba.njit(float64[:](float64[:])),但这样做该函数将不再接受标量。我怎样才能告诉numba 输入类似于Union[float64, float64[:]]?当然,这也适用于输出。非常感谢!
【问题讨论】:
-
在大多数情况下,您不必指定类型。 Numba 将在您第一次调用该函数时确定它们。如果您对这些类型感兴趣,可以致电
my_funct.nopython_signatures以查看检测到的内容。 -
@max9111 感谢您的评论。我刚开始使用
numba,所以我不是专家,但我注意到通常使用签名编译更快,所以我的代码更快。我在这里错过了什么吗?
标签: python-3.x numba