我的问题是由scipy.optimize.minimize()
函数激发的。
我有一个目标函数f(x, const1, const2)
,我希望x
最小化,const1
和const2
的值在f
内保持不变。< / p>
如何声明g(x) = f(x, const1, const2)
以便我可以将g
传递给minimize()
函数?
我目前正在使用全局变量,但解决方案变得非常混乱。
答案 0 :(得分:3)
最快/最简单的方法可能是使用python partial
函数。具体来说,如果你传递一系列args和kwargs,它将返回一个新函数,其中这些输入被冻结。例如:
from functools import partial
g = partial(f, const1=const1, const2=const2)
g(x)
将等同于:f(x, const1=const1, const2=const2)
您也可以使用位置参数而不是kwargs执行与上面相同的操作。有关更完整的治疗,请参阅the docs。
你可以这样做lambda
函数就像在testuser的答案中那样,但是你必须处理额外的开销,这有点违反了python&#39 ; s zen:
应该有一个 - 最好只有一个 - 显而易见的方法。
答案 1 :(得分:1)
g = lambda(x): f(x, const1, const2)