Мне нужно работать с большими трехмерными кубами данных. Я хочу сохранить их в файлах HDF5 (используя h5py или, возможно, pytables). Я часто хочу провести анализ только части этих кубов. Этот раздел слишком велик для хранения в памяти. Я хотел бы иметь представление в стиле numpy для интересующего меня фрагмента без копирования данных в память (аналогично тому, что вы могли бы сделать с numpy memmap). Это возможно? Насколько мне известно, выполняя срез с использованием h5py, вы получаете массив numpy в памяти.
Меня спросили, зачем мне это делать, ведь в какой-то момент данные все равно должны поступать в память. Мой код по необходимости уже запускал по частям данные из этих кубов, втягивая небольшие биты в память за раз. Эти функции будут самыми простыми, если они просто перебирают все переданные им наборы данных. Если бы у меня было представление данных на диске, я бы просто мог передать это представление этим функциям без изменений. Если у меня нет представления, мне нужно написать все мои функции так, чтобы они выполняли итерацию только по интересующему нас фрагменту. Это усложнит код и повысит вероятность человеческой ошибки во время анализа.
Есть ли способ просмотреть данные на диске без копирования в память?
dask
массивы (хотя я никогда не работал с ними для серьезных приложений, я должен сказать). Он разработан, среди прочего, для того, что вы описываете: данные слишком велики, чтобы поместиться в памяти, и интегрируются с хорошо известными инструментами, такими какpandas
иnumpy
. см. основной веб-сайт: dask.pydata.org/en/latest/docs.html и как создавать массивы dask, также из hfd5: dask.pydata.org/ ru / latest / array-creation.html. По крайней мере, в своих документах они пишут: изменяет ограничение по пространству с «умещается в памяти» на «умещается на диске». - person SpghttCd   schedule 21.06.2018