Я не могу запустить векторизованный ufun c. Обычный @njit работает нормально, а документация @ vectorize предполагает, что декораторы векторизации такие же, как njit. Я работаю на Windows 10, если это имеет значение
Демонстрационная программа выглядит следующим образом. Из приведенного ниже вывода видно, что функция njit работает без происшествий, и имеется ошибка типа с векторизованной функцией.
import sys
import numpy
import numba
Structured = numpy.dtype([("a", numpy.int32), ("b", numpy.float64)])
numba_dtype = numba.from_dtype(Structured)
@numba.njit([numba.float64(numba_dtype)])
def jitted(x):
x['b'] = 17.5
return 18.
@numba.vectorize([numba.float64(numba_dtype)], target="cpu", nopython=True)
def vectorized(x):
x['b'] = 17.5
return 12.1
print('python version = ', sys.implementation.version)
print('numpy version = ', numpy.__version__)
print('numba version = ', numba.__version__)
for struct in numpy.empty((3,), dtype=Structured):
print(jitted(struct))
print(vectorized(numpy.empty((3,), dtype=Structured)))
А на выходе получается
python version = sys.version_info (major = 3, minor = 7, micro = 1, releaselevel = 'final', serial = 0)
numpy version = 1.17.3
numba version = 0.48.0
18.0
18.0
18.0
Traceback (последний вызов был последним): файл "scratch.py", строка 49, в
print (векторизация (numpy .empty ((3,)), dtype = Structured))) TypeError: ufun c «векторизация» не поддерживается для типов ввода, и входы не могут быть безопасно приведены к каким-либо поддерживаемым типам в соответствии с правилом приведения «safe» '