捕获 curve_fit 的 RuntimeError 及其描述

catch RuntimeError of curve_fit and its description

有时 scipy.curve_fit 会引发 RuntimeError 异常。

示例代码(明确编写以引发异常):

import numpy
from scipy.optimize import curve_fit

def model(x, A, B):
    return A * x + B

data = numpy.array([[0, 1], [1, 2]])
par, cov = curve_fit(model, data[:, 0], data[:, 1], p0 = [0, 0], maxfev=1)

运行 代码引发异常

RuntimeError: Optimal parameters not found: Number of calls to function has reached maxfev = 1.

我可以用

捕获异常
import numpy
from scipy.optimize import curve_fit

def model(x, A, B):
    return A * x + B

data = numpy.array([[0, 1], [1, 2]])
try:
    par, cov = curve_fit(model, data[:, 0], data[:, 1], p0 = [0, 0], maxfev=1)
except RuntimeError:
    print('Runtime Error!')

如何获取异常的整个描述字符串,即“未找到最佳参数:函数调用次数已达到maxfev = 1”的错误信息?

import numpy
from scipy.optimize import curve_fit

def model(x, A, B):
    return A * x + B

data = numpy.array([[0, 1], [1, 2]])
try:
    par, cov = curve_fit(model, data[:, 0], data[:, 1], p0 = [0, 0], maxfev=1)
except RuntimeError as e:
    print('Runtime Error :', str(e))

这会将异常捕获为变量 e 并使用字符串转换来获取错误信息。