我有一个处理复杂数据类型的函数,并使用 numba
进行快速处理。我使用 numpy
声明一个零数组,带有复杂数据类型,在函数中稍后填充。但是在运行时,numba
无法重载生成零数组的函数。为了重现这个错误,我提供了一个 MWE。
import numpy as np
from numba import njit
@njit
def my_func(idx):
a = np.zeros((10, 5), dtype=complex)
a[idx] = 10
return a
my_func(4)
在初始化数组
a
时,出现了以下错误。numba.core.errors.TypingError: Failed in nopython mode pipeline (step: nopython frontend)
No implementation of function Function(<built-in function zeros>) found for signature:
zeros(Tuple(Literal[int](10), Literal[int](5)), dtype=Function(<class 'complex'>))
There are 2 candidate implementations:
Of which 2 did not match due to:
Overload of function 'zeros': File: numba\core\typing\npydecl.py: Line 511.
With argument(s): '(UniTuple(int64 x 2), dtype=Function(<class 'complex'>))':
No match.
我猜想这可能与变量 a
的数据类型有关(我需要它是复数类型)。我该如何解决这个错误呢?
非常感谢任何帮助。
my_func
在一个参数a
上进行原地操作。 - hilberts_drinking_problemnumba
中实现。 - hilberts_drinking_problemcomplex
替换为np.complex64
或np.complex128
可以正常工作,而我尝试的其他选择则不行。 - hilberts_drinking_problemnb.complex128
(与nb.c16
相同)和nb.complex64
(与nb.c8
相同)也可以使用。 - aerobiomat