如何在给定边界框(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)
应该给你合适的面具。然后,您可以计算并绘制此数组的空间平均值。
如果lat
和lon
是数据集中的坐标变量,则可以使用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
我使用下面的代码绘制了 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)
应该给你合适的面具。然后,您可以计算并绘制此数组的空间平均值。
如果lat
和lon
是数据集中的坐标变量,则可以使用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