Pandas xarray,多维坐标索引

Pandas xarray,多维坐标索引,pandas,numpy,python-xarray,Pandas,Numpy,Python Xarray,我不确定这是否可行,但我想向一个xarray添加一个新的坐标,该坐标与它索引的数据大小相同,但具有不同的维数 例如,以二维数组为例,一个维度是日期,另一个维度是时间: data=np.random.rand(5,24) date_idx=pd.date_范围(“20200921”、“20200925”) 一天中的时间=np.arange(0,np.timedelta64(1,“D”),np.timedelta64(1,“h”)) da=xr.DataArray(数据, dims=(“日期”、“每

我不确定这是否可行,但我想向一个xarray添加一个新的坐标,该坐标与它索引的数据大小相同,但具有不同的维数

例如,以二维数组为例,一个维度是日期,另一个维度是时间:

data=np.random.rand(5,24)
date_idx=pd.date_范围(“20200921”、“20200925”)
一天中的时间=np.arange(0,np.timedelta64(1,“D”),np.timedelta64(1,“h”))
da=xr.DataArray(数据,
dims=(“日期”、“每天的时间”),
coords={“日期”:日期,
“一天中的时间”:一天中的时间(idx)
我可以添加一个新的二维坐标,其中包含数组中每个值的时间

time\u idx=np.add.outer(日期、时间)
da.分配坐标(时间=(“日期”、“一天中的时间”)、时间idx)
但我真正想做的是将维度叠加在一起,为同一数组中的时间序列创建一个新的一维坐标,如下所示:

da.assign\u coords(time=(“日期”、“一天中的时间”)、time\u idx.flatte())
然而,这样做会提高:

ValueError: dimensions ('date', 'time_of_day') must have the same length as the number of data dimensions, ndim=1
我知道我可以将2D xarray重塑或展平为1D,并为时间序列创建新索引,但如果能够有一个1D坐标可以索引为2D xarray,这将非常方便。我对堆叠和多重索引做了一些研究,但我发现了同样的问题,每个索引都有单独的值访问每个维度,而不是一个可以用来在两个维度上索引位置的值


有人知道这是否可行吗?

这在Xarray中目前不可行。

是否要更改阵列和坐标的尺寸?或者有一个具有不同维度坐标的数组?@Maximilian理想情况下,我希望有一个可以由不同维度坐标索引的数组。在我的示例中,我可以将时间序列存储在2D数组中,一个轴是日期,另一个轴是一天中的时间。我希望能够指定一个称为时间的一维坐标,可以在这两个轴上进行索引。你说的“一个一维坐标…可以在这两个轴上进行索引”是什么意思?@Maximilan抱歉,我解释得不太清楚。假设我有一个2D X阵列,一个轴是3长,另一个是4长。我想添加一个12长的坐标。这类似于DataArray.stack(),但我希望在每个索引处设置一个值,而不是在每个索引处设置多个值的多索引。也许这是另一种可能的方法,例如,通过叠加创建一个新的多索引坐标,然后添加另一个坐标,该坐标具有引用该多索引坐标的自己的值集?xarrays中的坐标可以相互索引,还是只能直接索引数组中的轴?您希望最终的数组是什么样的?3x4还是12x1?Xarray只允许沿数组中的每个维度建立索引,因此在4x3数组上不能有12x1索引。[续]