时间片 Python Xarray 数据数组
Time Slice Python Xarray Dataarray
我需要知道我是否正在对我拥有的从 1991 年 1 月到 2021 年 12 月的 xarray 数据进行时间切片。坐标如下所示:
Coordinates:
* time (time) datetime64[ns] 1991-01-31 1991-02-28 ... 2021-12-31
number int32 0
step timedelta64[ns] 00:00:00
surface float64 0.0
* latitude (latitude) float64 58.0 57.75 57.5 57.25 ... 23.5 23.25 23.0
* longitude (longitude) float64 -130.0 -129.8 -129.5 ... -63.5 -63.25 -63.0
我用来对数据数组 (resultm) 进行切片的代码行如下所示 -
month_curr = resultm.sel(time=slice('2021-12','2021-12')).groupby('time.month').mean(dim='time')
而且,我的 objective 是切片或提取所有 2021 年 12 月的数据——这应该是月度值。看起来数据可能是每日形式,但下载类型是 'monthly_averaged_reanalysis' ERA5 数据。
谢谢,
您可以 select 使用日期时间访问器 .dt
的相关数据,您需要使用 numpy.logical_and
组合 dt.month
和 dt.year
以生成对应于所需索引的布尔索引。
对于您的示例,要生成 2021 年 12 月的月平均值,您可以执行以下操作:
import numpy as np
month_curr = resultm.sel(
time=np.logical_and(
resultm.time.dt.year == 2021, resultm.time.dt.month == 12
)
)
month_curr = month_curr.mean("time")
这是一个玩具示例(使用 2013 年):
import xarray as xr
import numpy as np
x = xr.tutorial.load_dataset("air_temperature")
xs = x.sel(
time=np.logical_and(x.time.dt.month == 12, x.time.dt.year == 2013)).mean("time")
我需要知道我是否正在对我拥有的从 1991 年 1 月到 2021 年 12 月的 xarray 数据进行时间切片。坐标如下所示:
Coordinates:
* time (time) datetime64[ns] 1991-01-31 1991-02-28 ... 2021-12-31
number int32 0
step timedelta64[ns] 00:00:00
surface float64 0.0
* latitude (latitude) float64 58.0 57.75 57.5 57.25 ... 23.5 23.25 23.0
* longitude (longitude) float64 -130.0 -129.8 -129.5 ... -63.5 -63.25 -63.0
我用来对数据数组 (resultm) 进行切片的代码行如下所示 -
month_curr = resultm.sel(time=slice('2021-12','2021-12')).groupby('time.month').mean(dim='time')
而且,我的 objective 是切片或提取所有 2021 年 12 月的数据——这应该是月度值。看起来数据可能是每日形式,但下载类型是 'monthly_averaged_reanalysis' ERA5 数据。
谢谢,
您可以 select 使用日期时间访问器 .dt
的相关数据,您需要使用 numpy.logical_and
组合 dt.month
和 dt.year
以生成对应于所需索引的布尔索引。
对于您的示例,要生成 2021 年 12 月的月平均值,您可以执行以下操作:
import numpy as np
month_curr = resultm.sel(
time=np.logical_and(
resultm.time.dt.year == 2021, resultm.time.dt.month == 12
)
)
month_curr = month_curr.mean("time")
这是一个玩具示例(使用 2013 年):
import xarray as xr
import numpy as np
x = xr.tutorial.load_dataset("air_temperature")
xs = x.sel(
time=np.logical_and(x.time.dt.month == 12, x.time.dt.year == 2013)).mean("time")