从浮点数组中识别无限值

时间:2014-09-09 22:56:51

标签: python scipy curve-fitting infinity

我正在使用函数scipy.optimize.curve_fit来拟合一些数据。如果拟合正常收敛,curve_fit将返回两个数组poptpcov,对于两个参数的函数,它们看起来像这样:

print popt
[  2.97591488e-03   3.08947359e+01]
print pcov
[[  2.44224139e-06  -1.67832708e-02]
 [ -1.67832708e-02   1.16808802e+02]]

问题是,该函数偶尔会无法获得有效的pcov,导致:

print pcov
inf

我需要能够判断pcov何时是“有效”列表/浮点数组,以及何时inf“无效”值。

我试过了:

if np.isfinite(np.array(pcov).any()):
    print 'valid'
else:
    print 'invalid'

但这并没有给出好的结果。

1 个答案:

答案 0 :(得分:0)

没关系,只是11个小时以上编写代码的临时思维模块。正确的方法是:

if np.isfinite(pcov).all():
    print 'valid'
else:
    print 'invalid'