[英]xarray slice function alternative for calculating average along a dimension
我正在使用 Xarray 和 .netCDF 气象数据。 我有通常的尺寸时间、纬度和经度以及两个主要变量:风速(时间、纬度、经度)和纬度 position(时间、经度)。
<xarray.Dataset>
Dimensions: (lon: 53, time: 25873, lat: 20)
Coordinates:
* lon (lon) float64 -80.0 -77.5 -75.0 -72.5 ... 45.0 47.5 50.0
* time (time) datetime64[ns] 1950-01-31 ... 2020-12-01
* lat (lat) float32 70.0 67.5 65.0 62.5 ... 27.5 25.0 22.5
Data variables:
uwnd (time, lat, lon) float32 -0.0625 0.375 ... -1.812 -2.75
positions (time, lon) float64 40.0 40.0 45.0 ... 70.0 70.0 70.0
对于每一次,lon,我都想计算这些位置周围的纬度平均值。
如果我做一个循环,我会这样做(对于 +-2.5° 纬度平均值):
for i in ds.lon.values:
for t in ds.time.values:
wind_averaged.loc[t,i]=ds.uwnd.sel(lon=i,time=t).sel(lat=slice(2.5+ds.positions.sel(lon=i,time=t).values,ds.positions.sel(lon=i,time=t).values-2.5)).mean('lat')
这显然非常糟糕,我想像这样使用slice()
:
wind_averaged=ds.uwnd.sel(lat=slice(2.5+ds.jet_positions.values,ds.jet_positions.values-2.5)).mean('lat')
但它给出了一个错误,因为我
cannot use non-scalar arrays in a slice for xarray indexing
有没有其他方法可以通过使用 Xarray power 来做我想做的事情而不用做两个 for 循环?
谢谢
我相信您正在寻找多维 groupby。 如果我理解正确的话,这里有一个针对这个问题的教程: https://xarray.pydata.org/en/stable/examples/multidimensional-coords.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.