Представляем новое измерение в xarray apply_ufuncPython

Программы на Python
Ответить
Anonymous
 Представляем новое измерение в xarray apply_ufunc

Сообщение Anonymous »

Существовал как минимум еще один вопрос относительно введения новых измерений в выходные данные xarray.apply_ufunc; У меня есть две проблемы с этим ответом: во-первых, мне кажется, что ответ ускользает от основной проблемы, а во-вторых, практически нет объяснений (неправильных) концепций, которые приводят к проблеме.
Давайте рассмотрим этот (абстрактный и неработающий) пример:

Код: Выделить всё

import numpy as np
import xarray as xr

a1 = np.array([[11,12,13,14],[15,16,17,18],[19,110,111,112],[113,114,115,116]], dtype=np.int16)
a2 = np.array([[21,22,23,24],[25,26,27,28],[29,210,211,212],[213,214,215,216]], dtype=np.int16)

ds = xr.Dataset(
data_vars= {
"d1": (("y", "x"), a1),
"d2": (("y", "x"), a2)
}
).chunk({"y":2,"x":2})

def stackuf(xa1, xa2):
return np.stack((xa1, xa2), axis=-1)

out = xr.apply_ufunc(
stackuf,
ds.d1,
ds.d2,
input_core_dims=[[],[]], # what is supposed to be here?
output_core_dims=[[]],   # and what is supposed to be here?
output_sizes=dict(ds.sizes, **{"xy":2}), # and what is needed there?
dask="parallelized",
vectorize=False,
output_dtypes=[np.int16],
)
out.compute()
Что он должен делать: Из двух переменных с двумя измерениями (y, x) создать новую переменную с тремя измерениями (y, x, xy)
Я подозреваю, что аргументы input_core_dims, output_core_dims, output_sizes являются ключевыми аргументами, чтобы это работало. Но я не совсем понимаю их семантику.
Пожалуйста, не надо:
  • просто заставить код работать
  • предлагать обходные пути, позволяющие избежать необходимости вводить новые измерения
вместо этого точно объяснять, что нужно понимать в отношении этой и подобных проблем.

Подробнее здесь: https://stackoverflow.com/questions/798 ... pply-ufunc
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»