gpt4 book ai didi

python - xarray - 使用 groupby 按一年中的每一天的气候每小时 netCDF 数据进行分组

转载 作者:行者123 更新时间:2023-12-01 01:15:03 24 4
gpt4 key购买 nike

我有一年多地理范围内每小时的 netCDF 气候数据,例如从 2017-01-01T00:00:002017-12-31T23:00:00

<xarray.Dataset>
Dimensions: (latitude: 106, longitude: 193, time: 8760)
Coordinates:
* latitude (latitude) float32 -39.2 -39.149525 ... -33.950478 -33.9
* longitude (longitude) float32 140.8 140.84792 140.89584 ... 149.95209 150.0
* time (time) datetime64[ns] 2017-01-01 ... 2017-12-31T23:00:00
Data variables:
T_SFC (time, latitude, longitude) float32 dask.array<shape=(8760, 106, 193), chunksize=(744, 106, 193)>
Attributes:
creationTime: 1525708833
creationTimeString: Mon May 7 09:00:32 PDT 2018
Conventions: COARDS

正如它所说,数据具有三个坐标(纬度、经度和时间)和一个变量是每小时温度。

我的代码:

import xarray as xr
mds_temp_path = '../Archive/*/IDV71000_VIC_T_SFC.nc' # netCDF
mds_temp = xr.open_mfdataset(mds_temp_path) # open netCDF and read into a dataset object

print(mds_temp.groupby('time.dayofyear').mean('time'))

我得到了什么:

<xarray.Dataset>
Dimensions: (dayofyear: 365, latitude: 106, longitude: 193)
Coordinates:
* latitude (latitude) float32 -39.2 -39.149525 ... -33.950478 -33.9
* longitude (longitude) float32 140.8 140.84792 140.89584 ... 149.95209 150.0
* dayofyear (dayofyear) int64 1 2 3 4 5 6 7 8 ... 359 360 361 362 363 364 365
Data variables:
T_SFC (dayofyear, latitude, longitude) float64 dask.array<shape=(365, 106, 193), chunksize=(1, 106, 193)>

我希望能够获得每天的平均温度值,例如生成的数据集中的时间坐标为“2017-01-01”、“2017-01-02”、“2017-01-03”、……、“2017-12-31”,而不是 1 、2、3、……、365。

最佳答案

您应该使用resample方法而不是 groupby :

mds_temp.resample(time='1D').mean()

文档中的时间序列数据部分更全面地描述了这些概念:http://xarray.pydata.org/en/stable/time-series.html#resampling-and-grouped-operations

关于python - xarray - 使用 groupby 按一年中的每一天的气候每小时 netCDF 数据进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54431557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com