调用用Numba向量化的函数时,如何解开参数字典?

时间:2019-02-08 13:46:21

标签: python numpy numba

我有几个要应用于标量数组的函数。基本上,所有这些函数都将标量作为第一个参数,并将每个函数特定于一堆参数。

我已经矢量化了这些函数,并且当单独调用时,一切似乎都工作良好。

但是我要做的是编写一个通用代码,其中多余的参数将封装在字典中,该字典在调用函数时将解压缩。使用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的某些功能或通过以其他方式传递参数,同时保持函数调用与实际传递参数的方式无关?

0 个答案:

没有答案