Использование xr.DataArray или xr.Dataset для многомерных массивоподобных данных - PullRequest
0 голосов
/ 16 мая 2019

Мне нравится xarray за его мощную реализацию помеченных многомерных массивов, но я наткнулся на один из основных вопросов "наилучшей практики", на который я нигде не смог найти ответа.

В моем случае использования (нейробиология) каждая записанная точка данных имеет много связанных с ней координат.Например, у меня может быть одномерный вектор, содержащий фактический результат записи, длина которого составляет около 10 тыс. Выборок.Координаты этого вектора могут включать:

  1. Метка времени для каждого измерения (дата-время).
  2. Идентификатор животного, которое сгенерировало данные (категориальные).
  3. Исходящийполе зрения (категориальное).
  4. Фаза эксперимента для каждой точки данных (категориальная).
  5. ...

Как вы уже догадались, используяxr.DataArray для этой цели очень интенсивно использует память, но похоже на правильную вещь (с точки зрения разработки приложения).Использование xr.Dataset может быть лучше с точки зрения памяти, но это не кажется естественным, и нарезка этого многомерного набора данных будет гораздо более громоздкой, я думаю, если это вообще возможно.

Я использую dask бэкэнд успешно справляется с огромными требованиями к памяти, но прежде чем делать это и полагаться на него, я хочу выяснить, есть ли лучший способ для моделирования таких данных.Например, если я использую xr.Dataset, как бы я порезал вектор результатов по определенному идентификатору животного и полю зрения только для одного экспериментального этапа?С xr.DataArray это можно сделать с помощью .sel, но если я попытаюсь использовать тот же метод с xr.Dataset, то я по сути использую тот же объем памяти, который использовал бы с xr.DataArray.

Заранее спасибо.

...