В своей работе я пытаюсь написать функцию, которая вычисляет давление на вертикальных уровнях сетки из двух входных данных:
1) xArray.DataArray
, содержащее как минимум 2 измерения, соответствующих полю поверхностного давления(но обычно дополнительно одно время и одно измерение члена ансамбля, возможно, больше)
2) целое число, соответствующее количеству вертикальных уровней
Он должен возвращать массив, подобный копии входного массивас дополнительным вертикальным размером.
Соответствующая часть такова:
pressure = np.empty(sfc_p.shape + (vert_res,), dtype=float)
# loop
for lev in range(vert_res):
pressure[..., lev] = float(a_n[lev]) + float(b_n[lev]) * sfc_p.values[sfc_p.shape[:]]
return pressure
sfc_p
- входной массив, vert_res
- целое число, a_n
и b_n
- некоторые коэффициенты.
Формы sfc_p
и pressure
:
(1, 51, 66, 131)
(1, 51, 66, 131, 137)
соответственно, например.
В любом случае, это приводит к ошибке:
"IndexError: индекс 1 выходит за границы оси 0 с размером 1"
Это, очевидно, относится к первому измерению, но я просто не могу понять, что происходит неправильно, или узнать, как правильно индексировать в такихслучай.Я не нашел подобных вопросов.Кто-нибудь может мне помочь?
Если что-то неясно, я буду рад предоставить дополнительную информацию.