Мне нравится xarray
за его мощную реализацию помеченных многомерных массивов, но я наткнулся на один из основных вопросов "наилучшей практики", на который я нигде не смог найти ответа.
В моем случае использования (нейробиология) каждая записанная точка данных имеет много связанных с ней координат.Например, у меня может быть одномерный вектор, содержащий фактический результат записи, длина которого составляет около 10 тыс. Выборок.Координаты этого вектора могут включать:
- Метка времени для каждого измерения (дата-время).
- Идентификатор животного, которое сгенерировало данные (категориальные).
- Исходящийполе зрения (категориальное).
- Фаза эксперимента для каждой точки данных (категориальная).
- ...
Как вы уже догадались, используяxr.DataArray
для этой цели очень интенсивно использует память, но похоже на правильную вещь (с точки зрения разработки приложения).Использование xr.Dataset
может быть лучше с точки зрения памяти, но это не кажется естественным, и нарезка этого многомерного набора данных будет гораздо более громоздкой, я думаю, если это вообще возможно.
Я использую dask
бэкэнд успешно справляется с огромными требованиями к памяти, но прежде чем делать это и полагаться на него, я хочу выяснить, есть ли лучший способ для моделирования таких данных.Например, если я использую xr.Dataset
, как бы я порезал вектор результатов по определенному идентификатору животного и полю зрения только для одного экспериментального этапа?С xr.DataArray
это можно сделать с помощью .sel
, но если я попытаюсь использовать тот же метод с xr.Dataset
, то я по сути использую тот же объем памяти, который использовал бы с xr.DataArray
.
Заранее спасибо.