scipy.optimize.least_squares只返回解决方案

时间:2018-04-26 07:46:25

标签: python-3.x optimization scipy

我试图使用Lest Square Optimization函数求解一组线性方程。因为我必须使用解决方案向量x进行进一步的计算,我想只返回x而不是其余的。 我'刚开始使用Python,所以我不知道,我怎么能输入代码,我只获得x而不是整个返回

我已经尝试了以下代码:

y= spo.least_squares(test_function, x0) [0]

但这对我没用。

你能帮我吗?

1 个答案:

答案 0 :(得分:0)

scipy.optimize.least_squares州的文件:

  

返回:OptimizeResult并定义了以下字段:

     

x :ndarray,shape(n,)

     

找到解决方案。

     

...

这意味着您需要按名称访问结果字段。要仅获得x,这应该有效:

y = spo.least_squares(test_function, x0).x

但是,我不想鼓励这种用法。如果由于某种原因优化失败,您将永远不会知道。因此,除非你绝对确定它不会失败,否则你不关心它是否失败不要使用这种模式。

最好编写一个处理错误处理的包装器,并在成功时转发x

def my_lsq(*args, **kwargs):
    result = spo.least_squares(*args, **kwargs)

    if result.success:
        return result.x
    else:
        print(result)
        raise RuntimeError(result.message)

可以像y = my_lsq(test_function, x0)一样使用。