nopython模式下numba decorator@njit中字符串数组的签名

nopython模式下numba decorator@njit中字符串数组的签名,python,decorator,numba,Python,Decorator,Numba,我试图在numba decorator@njit中为一系列文本使用签名。例如,此无感功能: import numpy as np import numba as nb @nb.njit(nb.int64 (nb.types.unicode_type, nb.int8[:], nb.types.unicode_type[:]), error_model='numpy') def foo(paramText, paramArrayOfInts, paramArra

我试图在numba decorator@njit中为一系列文本使用签名。例如,此无感功能:

import numpy as np
import numba as nb
@nb.njit(nb.int64
         (nb.types.unicode_type, nb.int8[:], nb.types.unicode_type[:]),
         error_model='numpy')
def foo(paramText, paramArrayOfInts, paramArrayOfTexts):
    print(paramText)
    return 1

a = 'Hello'
b = np.array([1, 2], dtype=np.int8)
c = np.array(['dog', 'cat', 'me'], dtype=np.dtype('U3'))
aNumber = foo(a, b, c)
print(aNumber)
显示此错误:

  File "C:\OSGeo4W64\apps\Python37\Lib\site-packages\numba\dispatcher.py", line 574, in _explain_matching_error
    raise TypeError(msg) TypeError: No matching definition for argument type(s) unicode_type, array(int8, 1d, C), array([unichr x 3], 1d, C)
如果我坚持使用具有以下特性的装饰器,有一个解决方案:

nb.typeof(np.array(['1', '2'], dtype='U3'))
而不是:

nb.types.unicode_type[:]
这很有效,但不是我想要的

版本: python 3.7 numpy:1.18.3
numba:0.48.0

请查看此网站。

感谢您为帮助一位同事所做的努力和意愿。如果你能写下你对OPs问题的答案,而不是发布一个链接,那将是很有帮助的。这是我在这里提问之前第一次检查的地方,它没有提供足够的关于使用一些numba.type的信息。有两种numba.types应该很有用(numba.types.Array和/或numba.from_dtype)。例如:numba.types.Array(np.dtype('此签名适用于最新的numba:nb.typeof(np.dtype('