我有一个函数通过以下算法拟合几个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)
因此,我将拟合应用于每个第一轴数据(shape =(50000,6)),然而,突然之间,在某些行中存在问题,使numpy.apply_along_axis停止并返回RuntimeError。由于我不在乎错误适合,我想跳过它们。
因此,是否可以在apply_along_axis函数中禁用那些RuntimeError?
答案 0 :(得分:2)
您可以简单地处理异常,并在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
顺便说一下,你拥有最好的化身。