【发布时间】:2021-11-08 06:07:19
【问题描述】:
我正在为一个 numba 错误而苦苦挣扎
Untyped global name 'is_a_subset': Cannot determine Numba type of <class 'numba.np.ufunc.gufunc.GUFunc'>
这通常意味着我摸索并使用了 numba 不支持的方法。以下代码失败。
@guvectorize("(n),(n)->(n)",nopython=True)
def is_a_subset(x,y,out):
out[:]=np.array([item in x for item in y])
@njit()
def test(x,y,z):
is_a_subset(x,y,z)
return z.mean()
x=np.array([[1,2,3],[3,2,1]])
y=np.array([[3,6,1],[1,2,3]])
z = np.empty_like(x)
test(x,y,z)
但是,在测试功能上删除 njit 会使一切正常。
def test(x,y,z):
is_a_subset(x,y,z)
return z.mean()
为什么 numba 在非 Python 模式下难以解析类型?
我也试过没有不同的结果
@guvectorize(["f8[:],f8[:],f8[:]"],"(n),(n)->(n)",nopython=True)
def is_a_subset(x,y,out):
out[:]=np.array([item in x for item in y])
【问题讨论】:
标签: python vectorization jit numba