如何在给定边界框(lon1、lon2、lat1、lat2)内通过时间获取变量的平均值?

How to get mean of a variable through time within a given boundarybox (lon1,lon2,lat1,lat2)?

我使用下面的代码绘制了 EDIR 变量随时间变化的面积平均值。但是,我想知道如何像边界框一样设置最小值和最大值 lat/lon,这样我就可以在设置 lat/lon 框中绘制 EDIR 变量的面积平均值。谢谢!

ld0 = xr.open_mfdataset('path/*LDASOUT*', condcat_dim='time')

t2=ld0.EDIR.mean(dim='x','y'))

t2.plot.line('-',color='black',linewidth=3,label='control_run')

plt.legend()
plt.show

根据文档 here,您似乎可以 select 坐标中的边界,例如使用 t2.where(t2.x < lon2, drop=True)。我在我的 phone 上,所以我现在不能测试它,但是像 :

temp = ld0.where( ( (t2.x > lon1)  &  (t2.x < lon2) & (t2.y > lat1)  &  (t2.y < lat2)  ), drop=True)

应该给你合适的面具。然后,您可以计算并绘制此数组的空间平均值。

如果latlon是数据集中的坐标变量,则可以使用sel方法。

da = ld0['EDIR'].sel(lon=slice(min_lon, max_lon), lat=slice(min_lat, max_lat))

可以在 xarray 文档中找到有关使用 xarray 基于坐标的选择的更多示例:http://xarray.pydata.org/en/stable/indexing.html