【问题标题】:Using loops in xarray.concat to select different time steps在 xarray.concat 中使用循环来选择不同的时间步长
【发布时间】:2020-05-04 11:44:05
【问题描述】:

我是 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 年夏季数据的新数据集

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

【问题讨论】:

    标签: python loops concatenation python-xarray


    【解决方案1】:

    .sel来做这个还是蛮方便的:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-04
      • 2019-03-13
      相关资源
      最近更新 更多