2015-09-05 121 views
0

我正在使用一个函数,scipy.optimize.fmin_bfgs,它有几个输出变量。我关心他们中的两个,xopt和fopt。我如何存储这些变量?下面是不是为我工作:从Python函数获取输出变量

xopt, fopt = fmin_bfgs(f, 0, fprime = fprime) 

然而,这给了我fopt

fopt = fmin_bfgs(f, 0, fprime = fprime) 

我需要xopt过,但它说,我“需要1个更多的价值来解压。”

回答

1

您需要设置full_output为true,之后foptfunc_callsgrad_callswarnflag包含太多;你可以切片返回的序列:

xopt, fopt = fmin_bfgs(f, 0, fprime = fprime, full_output=True)[:2] 

scipy.optimize.fmin_bfgs documentation

full_output布尔,可选
如果为True,除了xopt返回FOPT,func_calls,grad_calls和warnflag。

当然,这个功能的文档使得这一点远不明显,我首先必须看看linked source code。从外观上看,boptgopt也包含在full_output设置中,但文档无法正确解释这一点。