我有一个通过以下算法拟合多个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/