计算可沉淀水的 Pythonic 方法?

Pythonic way to compute precipitable water?

我正在使用来自 NCAR RDA 的 ERA5 再分析数据。我正在使用 metpy dewpoint_from_relative_humidity() 来计算露点,然后将其转换为 DataArray 对象并分配与我拥有 ERA5 数据的数据集对象匹配的坐标和尺寸。我想使用 [= 计算可降水量17=]() 在 metpy 中,但我正在努力找出执行此计算的最有效方法,因为它旨在处理数组(探测)而不是数据网格。我看过 xr.apply_ufunc() 但我不确定这是否是该 xarray 功能的适当应用,或者坦率地说,我什至不确定我将如何执行它。我可以编写 nested for loops/while 循环,但我认为这不是最好的方法。有没有人有什么建议?我尝试了下面的行,但它告诉我太多的位置参数,我不认为这可以完成,因为 ds['TD'] 不是数组。

ds['TD']  = xr.DataArray(mpcalc.dewpoint_from_relative_humidity(ds['T'],ds['R']),dims=['level','latitude','longitude'],coords=ds.coords)
ds['PW'] = xr.DataArray(mpcalc.precipitable_water(ds['TD'],ds.level,1000.0,700.0),dims=['level','latitude','longitude'],coords=ds.coords)

我猜你是 运行 MetPy 1.0 (rc1)。为此,对 precipitable_water() 函数的调用已更改为对 bottomtop 使用仅关键字参数。我希望以下内容有效:

pw = mpcalc.precipitable_water(ds['TD'], ds.level, bottom=1000.0, top=700.0)