xarray.DataArray.groupby的一次使用记录

项目场景:

一个日数据序列场,还有一个多年月平均场,把日数据减去多年月平均场得到日数据异常序列场


问题描述

由于每个月的天数不同,故难以利用广播机制完成任务。开始想到一个笨方法就是把月平均场利用每个月的天数将月平均场还原成日数据序列场一样的长度然后直接相减。在思索之后,限于编程能力的不足开始寻找新的方法。两数组维度如下:
在这里插入图片描述
在这里插入图片描述


解决方案:

在不断查找后发现xarray.DataArray.groupby用法,以前没发现这个,在去研究后发现这个函数在有些问题背景下真的很方便。简单描述这个函数就是讲xarray.DataArray数组类型根据需求分成不同的类处理,一看到这个就与我的问题契合了。我只需要将日数据序列以月分类后就可以直接与月平均序列场相减了,十分方便。原本很复杂的一个问题只需要一行代码就可完成。
核心代码如下:

sst_day.groupby('time.month') - sst_day_sec.groupby('time.month').mean(dim="time")

此处sst_day_sec并非已经处理好的月平均数据场,这里是挑选的30年的时序数据作为气候态。要求解多年月平均在这个函数下就变得简单起来,只需要将其月分类,再根据时间维度做平均就可以了。
关于xarray.DataArray.groupby的其他用法还很丰富,在将来有需求的时候继续探索。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值