Поскольку xarray выдает все более и более разреженные функциональные возможности массива, мне интересно, как добиться следующего:
У меня есть (на самом деле ленивый, не загруженный) массив dask arr_a размера, скажем, 2x1000 и dask массив arr_b размером 2x10:
from dask import array as da
import numpy as np
arr_a = da.from_array(np.random.rand(2, 1000))
arr_b = da.from_array(np.random.rand(2, 10))
Теперь я создаю два xarray DataArrays с «одинаковой», но по-разному выбранной временной осью:
import xarray as xr
import pandas as pd
time1 = pd.timedelta_range(0, periods=1000, freq="ms")/pd.offsets.Second(1)
time2 = pd.timedelta_range(0, periods=10, freq="100ms")/pd.offsets.Second(1)
xr1 = xr.DataArray(arr_a , dims=["cycle", "time"], coords={"time": time1, "cycle": [1,2]}).rename("ch1")
xr2 = xr.DataArray(arr_b , dims=["cycle", "time"], coords={"time": time2, "cycle": [1,2]}).rename("ch2")
xr_data = xr.combine_by_coords([xr1.to_dataset(), xr2.to_dataset()])
После объединения / объединения обоих DataArrays в набор данных, вторая переменная xr2 разрежена и заполнена NaN. Это на самом деле здорово, но каждому NaN нужно место в памяти. Я должен найти способ, эти элементы NaN не нуждаются в памяти.
Возможно ли это? Если да, то как?
Большое спасибо команде xarray и dask за вашу замечательную работу!