2024-05-15 19:36:40 发布
网友
我的问题是由scipy.optimize.minimize()函数引起的
scipy.optimize.minimize()
我有一个目标函数f(x, const1, const2),我想最小化x,其中const1和const2的值在f内是恒定的
f(x, const1, const2)
x
const1
const2
f
如何声明g(x) = f(x, const1, const2),以便将g传递给minimize()函数
g(x) = f(x, const1, const2)
g
minimize()
我目前正在使用全局变量,但解决方案变得相当混乱
g = lambda(x): f(x, const1, const2)
最快/最简单的方法可能是使用python partial函数。具体地说,如果向它传递一系列arg和kwarg,它将返回一个新函数,其中这些输入被冻结。例如:
partial
from functools import partial g = partial(f, const1=const1, const2=const2)
g(x)将等价于:f(x, const1=const1, const2=const2)
g(x)
f(x, const1=const1, const2=const2)
也可以对位置arg而不是kwarg执行与上面相同的操作。参见the docs了解更完整的处理方法
您可以这样做,这将是一个lambda函数,如testuser的答案所示,但是您必须处理额外的开销,这有点违反了python的禅意:
lambda
There should be one and preferably only one obvious way to do it.
最快/最简单的方法可能是使用python
partial
函数。具体地说,如果向它传递一系列arg和kwarg,它将返回一个新函数,其中这些输入被冻结。例如:g(x)
将等价于:f(x, const1=const1, const2=const2)
也可以对位置arg而不是kwarg执行与上面相同的操作。参见the docs了解更完整的处理方法
您可以这样做,这将是一个
lambda
函数,如testuser的答案所示,但是您必须处理额外的开销,这有点违反了python的禅意:相关问题 更多 >
编程相关推荐