首页 > 解决方案 > 在 xarray.concat 中使用循环来选择不同的时间步长

问题描述

我是 python 新手,我正在寻找有关循环结构的帮助。专门使用循环结构来防止函数行过长。我创建了一个包含北欧年度季节性降水数据的数据集。我只对 1950-2018 年的夏季数据感兴趣

print (PrNEU)
    <xarray.DataArray 'rr' (time: 273, latitude: 201, longitude: 464)>

    Coordinates:
      * latitude   (latitude) float64 25.38 25.62 25.88 26.12 ... 74.88 75.12 75.38
      * longitude  (longitude) float64 -40.38 -40.12 -39.88 ... 74.88 75.12 75.38
      * time       (time) datetime64[ns] 1950-06-01 1950-09-01 ... 2018-06-01

NEW = xr.concat([PrNEU[0,:,:],PrNEU[4,:,:],PrNEU[8,:,:],dim='time')

Print (NEW)
    <xarray.DataArray 'rr' (time: 3, latitude: 88, longitude: 200)>

    Coordinates:
      * longitude  (longitude) float64 -9.875 -9.625 -9.375 ... 39.38 39.62 39.88
      * latitude   (latitude) float64 49.62 49.88 50.12 50.38 ... 70.88 71.12 71.38
      * time       (time) datetime64[ns] 1950-06-01 1951-06-01 1952-06-01

我可以手动写下所有时间步长,但必须有更简单的方法来创建一个新数据集,其中仅包含 1950 年至 2018 年的年度夏季数据

有关如何组织循环的任何帮助都会有所帮助。谢谢

标签: pythonloopsconcatenationpython-xarray

解决方案


使用它非常方便.sel

# selecting summer (June) every year
mon = PrNEU.time.dt.month == 6

NEW = PrNEU.sel(time=mon)

然后你可以对每年的夏季数据做一些进一步的分析NEW


推荐阅读