Как я могу взять транспонирование для 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, что в моем случае совершенно желательно.

Другие вопросы по тегам