所以我有一些功能
def fun(x,y=None):
# Do some stuff
并且我想通过x最小化此函数,但是有时我将要有一个附加参数y。 (基本上,我希望y始终采用其默认值,除非在最小化时。)
通常,如果函数只是def fun(x,y):
,我将能够执行scipy.optimize.minimize(x,args=(y))
。但是,当y是可选变量时该怎么办?放args=(y=value)
给我无效的语法,(当然,它看起来很不对劲),但是我不确定正确的语法是什么。
如果相关,我正在使用Python 3.7。
你不能。 minimize
仅对其调用的函数采用不带关键字的可选参数。这是用the documentation编写的,因为它描述了被称为fun(x, *args)
的函数,没有任何可选参数。
如果您的函数是f(x, y=None, z=None)
,则必须调用scipy.optimize.minimize(f, x, (y, z))
。
相反,我将构造一个lambda,该lambda将参数直接作为关键字传递。这样做:
scipy.optimize.minimize(lambda x: f(x, z=0), x)
这很清楚您要传递哪些可选参数。