根据特定月份选择xarray/pandas索引

Gab*_*abe 2 python numpy pandas python-xarray

我有一个xarray DataArray,我想在整个时间序列中选择四月,五月,六月(类似于time.season =='JJA').

其结构如下:

<xarray.DataArray 't2m' (time: 492, latitude: 81, longitude: 141)>
Run Code Online (Sandbox Code Playgroud)

我以前选择JJA:

seasonal_data =temp_data.sel(time=temp_data['time.season']=='JJA')
Run Code Online (Sandbox Code Playgroud)

我想做同样的事情,但用'AMJ'代替.我可以添加任何我可能遗漏的细节.

谢谢

sho*_*yer 14

选择自定义月份的最简单方法是使用布尔掩码,例如,

def is_amj(month):
    return (month >= 4) & (month <= 6)

seasonal_data = temp_data.sel(time=is_amj(temp_data['time.month']))
Run Code Online (Sandbox Code Playgroud)

请注意,您需要使用按位运算符,&或者|因为Python的内置函数andor不能使用向量.此外,您需要括号,因为按位运算符的优先级高于比较.

  • 自己看看:https://github.com/pydata/xarray/blob/90c854fd0ad20a35935319eb5b45a827d3269e81/xarray/core/dataset.py#L69-L73我们实际上使用了一个整数除法为4的技巧,虽然速度可能稍快,但也不太清楚(也不太通用)。 (2认同)