例如,我有一个xarray数据数组:
<xarray.Dataset>
Dimensions: (lat: 180, lon: 360, time: 360)
Coordinates:
* time (time) datetime64[ns] 1990-01-01 1990-02-01 ... 2020-01-01
* lat (lat) float64 -89.5 -88.5 -87.5 -86.5 ... 87.5 88.5 89.5
* lon (lon) float64 0 1 2 3 ... 357 358 359
Data variables:
a (time, lat, lon) float32 dask.array<shape=(360, 180, 360), chunksize=(360, 180, 360)>
b (time, lat, lon) float32 dask.array<shape=(360, 180, 360), chunksize=(360, 180, 360)>
c (time, lat, lon) float32 dask.array<shape=(360, 180, 360), chunksize=(360, 180, 360)>
d (time, lat, lon) float32 dask.array<shape=(360, 180, 360), chunksize=(360, 180, 360)>
如何计算a, b, c, d
的平均值到新变量e
中?
我知道dataset.mean()
对坐标尺寸有效吗?例如随着时间的推移,经纬度或长期变化,但是如何计算变量本身的平均值?在网上找不到太多有关此的信息。
非常感谢!
答案 0 :(得分:3)
您可以将其转换为数组,然后计算新维度的均值:
mean = ds.to_array(dim='new').mean('new')
ds.assign(e=mean)
答案 1 :(得分:0)
我要牢记Maximilian的好解决方案。
不知道这种解决方案,我使用了numpy + list comprehension:
np_mean = np.ma.mean( [ ds[var].values for var in ds.data_vars ], axis=0 )
ds.assign(mean = np_mean)