在Python中从一个多变量函数创建一个单变量函数

2024-05-15 19:36:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我的问题是由scipy.optimize.minimize()函数引起的

我有一个目标函数f(x, const1, const2),我想最小化x,其中const1const2的值在f内是恒定的

如何声明g(x) = f(x, const1, const2),以便将g传递给minimize()函数

我目前正在使用全局变量,但解决方案变得相当混乱


Tags: 函数声明目标scipy解决方案optimizeminimize全局变量
2条回答
g = lambda(x): f(x, const1, const2)

最快/最简单的方法可能是使用python partial函数。具体地说,如果向它传递一系列arg和kwarg,它将返回一个新函数,其中这些输入被冻结。例如:

from functools import partial
g = partial(f, const1=const1, const2=const2)

g(x)将等价于:f(x, const1=const1, const2=const2)

也可以对位置arg而不是kwarg执行与上面相同的操作。参见the docs了解更完整的处理方法

可以这样做,这将是一个lambda函数,如testuser的答案所示,但是您必须处理额外的开销,这有点违反了python的禅意:

There should be one and preferably only one obvious way to do it.

相关问题 更多 >