У меня есть несколько функций, которые я хочу применить к массиву скаляров.По сути, все эти функции принимают скаляр в качестве первого аргумента и набор параметров, специфичных для каждой функции.
Я векторизовал эти функции, и, кажется, все работает хорошо при вызове по отдельности.
ЧтоОднако я хочу написать общий код, в котором дополнительные аргументы будут заключены в словарь, который будет распакован при вызове функции.Это хорошо работает с numpy.vectorize
, но дает ValueError
при попытке с numba
(см. Пример кода ниже).
import numba
import numpy
@numba.vectorize([numba.float64(numba.float64, numba.float64, numba.float64)])
def force(r, s, m):
if not r:
return 0.
return 4. * m * ((s/r)**12 - (s/r)**6)
R = numpy.linspace(0,10)
force(R, 0.5, 3) # Works OK
force(R, **{'s': 0.5, 'm': 3}) # Raises ValueError: invalid number of arguments
Есть ли способ обойти эту проблему?Например, используя некоторые функции numba или передавая аргументы другим способом, сохраняя независимость вызова функции от того, какие аргументы фактически передаются?