Как я могу взять транспонирование для DataArray с повторяющимися измерениями?
Предположим, у меня есть DataArray
с размерами (a, b, b)
:
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")
,
Мои массивы данных содержат ковариационные матрицы, поэтому естественно, что окончательное измерение повторяется.
1 ответ
Решение
Это похоже на работу:
db = xarray.DataArray(da.values.T, dims=("a", "b", "b"))
таким образом обходя xarray. Эксперименты показывают, что db
до сих пор вид той же памяти, что и da
, что в моем случае совершенно желательно.