Преобразование 3D-массива данных в 2D-массив данных

#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", ...) в конце