微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

xarray,使用多维坐标索引

如何解决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。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。