如何对具有重复维度的 DataArray 进行转置?

How can I take the transpose for a DataArray with repeated dimensions?

假设我有一个尺寸为 (a, b, b):

DataArray
In [111]: da = xarray.DataArray(arange(2*5*5).reshape(2, 5, 5), dims=("a", "b", "b"))     

如何进行转置,交换最后两个维度的顺序?

In [112]: da.T

结果

ValueError: repeated axis in transpose

da.transpose("a", "b", "b")一样。

我的数据数组包含协方差矩阵,所以最终维度重复是很自然的。

这似乎有效:

db = xarray.DataArray(da.values.T, dims=("a", "b", "b"))

从而绕过xarray。实验表明 db 仍然是与 da 相同的内存视图,这在我的情况下是完全可取的。