我不确定是否可以,但是我想向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方面做了一些尝试,但是我发现了相同的问题,每个索引都有访问每个维度的单独值,而不是一个可用于在两个维度上索引位置的单个值。
有人知道这是否可能吗?
答案 0 :(得分:0)
当前无法使用xarrays。