При numba
обычно нет проблем с компиляцией функции, которая принимает дополнительные аргументы со значениями по умолчанию (и этот вопрос был рассмотрен здесь ), например:
@numba.jit
def f(a, b=1):
return a + b
Я пытаюсь достичь той же функции не с jit
, а с vectorize
.То есть ключевое слово Omitted
, предложенное в связанном вопросе, здесь больше не работает:
@numba.vectorize
def f(a, b=1):
return a + b
a = numpy.array([1, 2, 3])
f(a) # Raises ValueError: invalid number of arguments
f(a, 2) # Works OK
@numba.vectorize(['float64(float64, float64)', 'float64(float64, Omitted(float64))'])
def f(a, b=1):
return a + b # Raises NotImplementedError
Есть ли чистый способ обойти эту проблему?например, предоставив vectorize
конкретную подпись, может быть?