#python #pandas #dask #python-xarray
Вопрос:
У меня есть xarray dataarray
следующая форма.
(10, 666, 999)
как ("band", "y", "x")
.
Я хочу привести dataarray
себя в новую (666*999, 10)
форму. Как я могу это решить?
Я пытался, как ans = x_arr.transpose("y", "x", "band").reshape(666*999, 10)
но это не сработало. AttributeError: 'DataArray' object has no attribute 'reshape'
ссылка, http://xarray.pydata.org/en/stable/generated/xarray.DataArray.html
Ответ №1:
Вы можете использовать stack
для объединения существующих измерений в новое. В вашем случае это было бы что-то вроде darr.stack(xy=["x", "y"])
Вот воспроизводимый пример:
x = xr.tutorial.load_dataset("air_temperature")
print(x.air.shape)
#(2920, 25, 53)
x2 = x.air.stack(point=["lat", "lon"])
print(x2.shape)
#(2920, 1325)
Комментарии:
1. Однако в моем случае требуемым результатом является,
(25*53, 2920)
.2. просто добавьте
.transpose("point", ...)
в конце