我有几个要应用于标量数组的函数。基本上,所有这些函数都将标量作为第一个参数,并将每个函数特定于一堆参数。
我已经矢量化了这些函数,并且当单独调用时,一切似乎都工作良好。
但是我要做的是编写一个通用代码,其中多余的参数将封装在字典中,该字典在调用函数时将解压缩。使用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的某些功能或通过以其他方式传递参数,同时保持函数调用与实际传递参数的方式无关?