Избегайте изменения размера, повторного разбиения или преобразования типов в наборе данных xarray с массивами int разных размеров - PullRequest
0 голосов
/ 03 апреля 2020

В приведенном ниже коде происходит 3 вещи, которые я бы хотел лучше контролировать.

  • r0 изменяется до размера r1
  • * У 1008 * последний блок расширен как часть изменения размера. (Вывод набора данных некорректен для кусков - теперь он имеет 2 блока размером 4 и 12)
  • r0 преобразуется в число с плавающей точкой, поскольку NaN является отсутствующим значением.

Можно ли избежать изменения размеров массивов разных размеров вдоль измерения (что, возможно, занимает память и дисковое пространство)? Существует ли какая-либо разреженная реализация для этого случая, которая допускает пропущенные регионы?

Можно ли контролировать порцию? В этом случае я бы предпочел, чтобы порция была одинаковой по размеру (размер 4 ниже) и была одинаковой для всего набора данных.

Если нельзя избежать изменения размера, можно ли избежать неявного преобразования? Я вижу ссылки на fill_value в кодовой базе, но я упустил возможность увидеть, как это можно явно передать здесь.

import xarray as xr
import dask.array as da
import numpy as np

r0 = xr.DataArray(da.from_array(np.arange(8), chunks=4), coords=[('x', range(8))])
r1 = xr.DataArray(da.from_array(np.arange(16), chunks=4), coords=[('x', range(16))])
ds = xr.Dataset({'r0': r0, 'r1': r1})
print(ds)
print()
print(ds.r0.data.chunks)
<xarray.Dataset>
Dimensions:  (x: 16)
Coordinates:
  * x        (x) int64 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Data variables:
    r0       (x) float64 dask.array<chunksize=(4,), meta=np.ndarray>
    r1       (x) int64 dask.array<chunksize=(4,), meta=np.ndarray>

((4, 12),)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...