Проблема, с которой вы сталкиваетесь, заключается в том, что умножающие единицы работают с numpy массивами, но не с xarray.DataArray
экземплярами - это то, что вы получаете, когда получаете vertical
. Было бы неплохо, если бы это было не так, но сейчас это мир, в котором мы живем. Чтобы обойти этот MetPy, есть несколько полезных инструментов для xarray и юнитов .
В этом случае тем не менее, нет необходимости вручную переводить ваши единицы из Па в гПа - прелесть поддержки юнитов в том случае, если они известны и имеют правильную размерность, potential_temperature
не имеет значения, какие они есть. Вот как я написал бы ваш код:
vertical = data['temperature'].metpy.vertical
temperature, pressure, relative_humidity = xr.broadcast(data['temperature'],
vertical,
data['relative_humidity'])
theta = mpcalc.potential_temperature(pressure, temperature)
Для дальнейшего использования, если вам нужно взять xarray и преобразовать его в простой массив numpy с присоединенными единицами измерения, вы можете использовать unit_array
атрибут:
temp_with_units = temperature.metpy.unit_array