在Python中,从多个变量的函数创建一个单个变量的函数
我的问题是由在Python中,从多个变量的函数创建一个单个变量的函数,python,function,Python,Function,我的问题是由scipy.optimize.minimize()函数引起的 我有一个目标函数f(x,const1,const2),我想为x最小化,其中const1和const2的值在f内保持不变 如何声明g(x)=f(x,常数1,常数2)以便将g传递给minimize()函数 我目前正在使用全局变量,但解决方案变得相当混乱。最快/最简单的方法可能是使用pythonpartial函数。具体来说,如果您向它传递一系列arg和kwarg,它将返回一个新函数,其中这些输入将被冻结。例如: g = lamb
scipy.optimize.minimize()
函数引起的
我有一个目标函数f(x,const1,const2)
,我想为x
最小化,其中const1
和const2
的值在f
内保持不变
如何声明g(x)=f(x,常数1,常数2)
以便将g
传递给minimize()
函数
我目前正在使用全局变量,但解决方案变得相当混乱。最快/最简单的方法可能是使用python
partial
函数。具体来说,如果您向它传递一系列arg和kwarg,它将返回一个新函数,其中这些输入将被冻结。例如:
g = lambda(x): f(x, const1, const2)
from functools import partial
g = partial(f, const1=const1, const2=const2)
g(x)
将等价于:f(x,const1=const1,const2=const2)
也可以对位置arg而不是kwarg执行与上面相同的操作。有关更完整的治疗方法,请参阅
您可以通过一个lambda
函数来实现这一点,就像testuser的回答一样,但是您必须处理额外的开销,这有点违反了python的zen:
应该有一个——最好只有一个——显而易见的方法来做到这一点
最快/最简单的方法可能是使用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执行与上面相同的操作。有关更完整的治疗方法,请参阅
您可以通过一个lambda
函数来实现这一点,就像testuser的回答一样,但是您必须处理额外的开销,这有点违反了python的zen:
应该有一个——最好只有一个——显而易见的方法来做到这一点
你试过了吗?你试过了吗?