xarray,使用多维坐标索引

时间:2020-09-28 16:23:11

标签: pandas numpy python-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"), np.timedelta64(1, "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_of_day"), time_idx))

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

da.assign_coords(time=(("date", "time_of_day"), 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方面做了一些尝试,但是我发现了相同的问题,每个索引都有访问每个维度的单独值,而不是一个可用于在两个维度上索引位置的单个值。

有人知道这是否可能吗?

1 个答案:

答案 0 :(得分:0)

当前无法使用xarrays。