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.ndim
或 my_array.shape
来决定要做什么。
我有一个适合一维数据数组的函数,但如果数据不合适,这个函数可能会失败,并会引发 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.ndim
或 my_array.shape
来决定要做什么。