У меня есть функция, которая подходит для одномерного массива данных, но эта функция может завершиться ошибкой, если данные неуместны, и вызовет RuntimeError.
Поскольку мои данные представляют собой двумерный массив, я хочу попробовать ихесли возможно, на обеих осях данных, в противном случае просто запустите их на одной оси, которая не выдает ошибку.
Если я правильно понял обозначение, я пытаюсь myfunc
на своих данных в1-я ось, если это не удалось, перейдите ко второй, в противном случае вернитесь к 1-й.Например, для 1-го столбца или строки:
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
Однако в некоторых сценариях он будет работать с обоими без ошибок, и было бы полезно увидеть / сравнить оба результата.Как мне написать этот цикл так, чтобы он выполнял оба, если это возможно, в противном случае просто будет работать тот, который работал?Я подумываю о том, чтобы поместить все это в цикл if
или иметь несколько операторов try
?
Заранее спасибо