我正在尝试编写一个函数,该函数初始化数组并在返回之前将其改组。 将numba导入为nb
push 0
错误消息说我使用了不受支持的功能或数据类型:
@nb.jit(nopython=True, cache=True)
def test(x):
ind = np.array(range(len(x)))
np.random.shuffle(ind)
return ind
numba是否支持numpy.random.shuffle()?如何修改?谢谢!
答案 0 :(得分:1)
这实际上与random.shuffle
无关,因为numba supports the random module out of the box。
这里的问题是设置了nopython
标志时numba cannot support the range
object(因为它是一个python对象)。用range
代替np.arange
:
@nb.njit(cache=True) # same as @nb.jit(nopython=True, ...)
def test(x):
ind = np.arange(len(x))
np.random.shuffle(ind)
return ind
test([1, 2, 3])
# array([1, 0, 2])