HDF5 в Dask (Python) эффективный способ фильтрации нескольких наборов данных - PullRequest
0 голосов
/ 21 февраля 2019

Мне нужно загрузить несколько файлов hdf5, извлечь определенные каналы (если они есть, иначе отменить файл), отфильтровать эти каналы с помощью определенной функции фильтра ленивым способом: поскольку общие данные могут превышать объем моей оперативной памяти.И, наконец, запишите их обратно в файлы hdf5.Я использую h5py и Dask.

Я заметил, что мне нужно держать файлы открытыми для выполнения вычислений на массиве dask: это так или я делаю что-то не так?

Сначала я попробовалиспользовать dask dataframes: я получаю следующее сообщение об ошибкеcommonPath - это фиксированный путь (зависит от файла), а signalName - это имя сигнала.

, поэтому я попробовал следующее

dd.read_hdf(file_name, key = commonPath +'/*/MEASURED')

, и возникла предыдущая ошибка.Я получаю тот же ответ, даже если я передаю вручную несколько каналов или один фиксированный ключ.

Поэтому я попытался использовать dask-массивы.Кажется, они выполняют свою работу, но нарезка не работает, если я использую массив dask в качестве логического индекса: это вынуждает меня вычислять массив.Предположим, я хочу строку только там, где выполняется определенное условие (например,> 0), каков наилучший способ достижения этого?

Наконец, лучше ли выводить файл (ы) hdf5 с несколькими наборами данных или одним набором данных с двумерным массивом (dask)?Чтобы выполнить фильтрацию в данный момент, я оцениваю dask, вызывающий метод compute, затем оборачиваю его в пустой массив и, наконец, использую логическое индексирование;какова лучшая практика?

...