我有一个通过以下算法拟合多个x,y数组的函数:

def f(func, data, init):
   import scipy.optimize as opt
   from numpy import apply_along_axis

   fit = lambda d: opt.curve_fit(func, d[:cut], d[cut:], p0=[init, init], maxfev=100)[0]

   return apply_along_axis(fit, 1, data)

因此,我将拟合应用于每个数据的第1轴(shape =(50000,6)),但是,突然之间,某些行出现了问题,导致numpy.apply_along_axis暂停并返回RuntimeError。由于我不在乎错误的配合,因此我想跳过它们。

因此,是否可以在apply_along_axis函数中禁用那些RuntimeError?

最佳答案

您可以简单地处理该异常,并在RuntimeError发生时返回0。

编辑:现在处于fit状态。

def fit(d):
    try:
        return opt.curve_fit(func, d[:cut], d[cut:], p0=[init, init], maxfev=100)[0]
    else:
        return 0

但是,我不知道返回0是否是最好的选择。 apply_along_axis期望函数返回数组或标量。由您决定要返回的内容。 curve_fit在引发它时发送运行时错误的原因。它应该可以帮助您知道什么是最好的方法,甚至可能一开始就可以防止异常。您可能需要在此处发布它,以帮助我们了解问题所在。

您可以在此处找到有关异常处理的更多信息:https://wiki.python.org/moin/HandlingExceptions

顺便说一下,您拥有最大的头像。

关于python - 跳过numpy.apply_along_axis中的RuntimeError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22639358/

10-13 07:31