Как распаковать словарь аргументов при вызове функции, векторизованной с помощью Numba? - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть несколько функций, которые я хочу применить к массиву скаляров.По сути, все эти функции принимают скаляр в качестве первого аргумента и набор параметров, специфичных для каждой функции.

Я векторизовал эти функции, и, кажется, все работает хорошо при вызове по отдельности.

ЧтоОднако я хочу написать общий код, в котором дополнительные аргументы будут заключены в словарь, который будет распакован при вызове функции.Это хорошо работает с 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 или передавая аргументы другим способом, сохраняя независимость вызова функции от того, какие аргументы фактически передаются?

...