Python 'try - except - else' 同时处理多个可能的结果

Python 'try - except - else' handling multiple possible outcomes simultaneously

我有一个适合一维数据数组的函数,但如果数据不合适,这个函数可能会失败,并会引发 RuntimeError。

因为我的数据是一个二维数组,我想尽可能在​​数据的两个轴上尝试它,否则就 运行 它在一个轴上不会抛出错误。

如果我理解正确,我会在第一个轴上尝试 myfunc 我的数据,如果失败则转到第二个,否则返回第一个。例如。对于第一列或第一行:

def myfunc(data):
    # some code to do a fit, might crash
    return fit_params

data = np.random.random((5,5))

try:
    results_y = myfunc(data[0,:])

except RuntimeError:
    results_x = myfunc(data[:,0])
    # some math on the results

else:
    results_y = myfunc(data[0,:])
    # some math on the results

但是,在某些情况下,它可以在两者上正常工作而不会出现错误,并且 see/compare 这两个结果都会很有用。我该如何编写这个循环,以便在可能的情况下同时执行这两个循环,否则只执行有效的循环?我在考虑将其全部放在 if 循环中还是使用多个 try 语句?

提前致谢

两个独立的try..except子句

try:
    results_y = myfunc(data[0,:])
except RuntimeError:
    pass

try:
    results_x = myfunc(data[:,0])
except RuntimeError:
    pass

但是,没有必要这样做。这完全取决于数组的维数,因此最好检查 my_array.ndimmy_array.shape 来决定要做什么。