xarray,使用多维坐标索引

问题描述

我不确定是否可以,但是我想向xarray添加一个新坐标,该xarray的大小与其索引所索引的数据大小相同,但是维数不同。

例如,采用2D数组,一维是日期,另一维是一天中的时间:

data = np.random.rand(5,24)
date_idx = pd.date_range("20200921","20200925")
time_of_day_idx = np.arange(0,np.timedelta64(1,"D"),"h"))

da = xr.DataArray(data,dims=("date","time_of_day"),coords={"date" : date_idx,"time_of_day": time_of_day_idx})

我可以为数组中的每个值添加一个带有时间的新2D坐标。

time_idx = np.add.outer(date_idx,time_of_day_idx)
da.assign_coords(time=(("date",time_idx))

但是我真正想做的是将维度堆叠在一起,为同一数组中的时间序列创建一个新的一维坐标,就像这样:

da.assign_coords(time=(("date",time_idx.flatten()))

但是,这样做会引起:

ValueError: dimensions ('date','time_of_day') must have the same length as the number of data dimensions,ndim=1

我知道我可以将2D xarray整形或展平为1D并创建时间序列的新索引,但是能够拥有可以索引到2D xarray的1D坐标确实非常方便。我在堆叠和MultiIndex方面做了一些尝试,但是我发现了相同的问题,每个索引都有访问每个维度的单独值,而不是一个可用于在两个维度上索引位置的单个值。

有人知道这是否可能吗?

解决方法

当前无法使用xarrays。