python捕捉warning_python – 捕获OptimizeWarning作为例外

我只是试图捕获scipy.optimize.curve_fit函数抛出的OptimizeWarning,但我意识到它没有被识别为有效的异常.

这是我正在做的非常简单的想法:

from scipy.optimize import curve_fit

try:

popt, pcov = curve_fit(some parameters)

except OptimizeWarning:

print 'Maxed out calls.'

# do something

我看了一眼the docs,但那里什么都没有.

我错过了一些明显的东西,还是因为某些原因而没有明确定义?

顺便说一下,这是我得到的完整警告,我想抓住:

/usr/local/lib/python2.7/dist-packages/scipy/optimize/minpack.py:604: OptimizeWarning: Covariance of the parameters could not be estimated

category=OptimizeWarning)

解决方法:

您可以要求Python使用以下代码将此警告作为异常引发:

import warnings

from scipy.optimize import OptimizeWarning

warnings.simplefilter("error", OptimizeWarning)

# Your code here

警告问题

不幸的是,Python中的警告有一些您需要注意的问题.

多个过滤器

首先,可以有多个过滤器,因此您的警告过滤器可以被其他内容覆盖.这不是太糟糕,可以使用catch_warnings上下文管理器解决:

import warnings

from scipy.optimize import OptimizeWarning

with warnings.catch_warnings():

warnings.simplefilter("error", OptimizeWarning)

try:

# Do your thing

except OptimizeWarning:

# Do your other thing

举起一次

其次,警告仅在默认情况下提出一次.如果在设置过滤器之前已经提出警告,则可以更改过滤器,它不会再次发出警告.

据我所知,遗憾的是你无能为力.您需要尽可能早地确保运行warnings.simplefilter(“error”,OptimizeWarning).

标签:python,exception,warnings,scipy

来源: https://codeday.me/bug/20190609/1204057.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值