Python-лучшая структура данных для невероятно большой матрицы
Мне нужно создать около 2 миллионов векторов с 1000 слотов в каждом (каждый слот просто содержит целое число).
Какая структура данных лучше всего подходит для работы с таким объемом данных? Возможно, я переоцениваю объем используемой обработки / памяти.
Мне нужно перебрать коллекцию файлов (в общей сложности около 34,5 ГБ) и обновлять векторы каждый раз, когда на линии встречается один из 2-х миллионов элементов (каждый из которых соответствует вектору).
I можно было бы легко написать код для этого, но я знаю, что он не будет достаточно оптимальным для обработки объема данных, поэтому я обращаюсь к вам, экспертам. :)
Лучший, Джорджина
3 ответа:
Вы можете быть привязаны к памяти вашей машины. Без очистки запущенных программ:
a = numpy.zeros((1000000,1000),dtype=int)
Не укладывается в память. Но в целом, если бы вы могли разбить задачу так, что вам не нужен весь массив в памяти сразу, или вы можете использовать разреженное представление, я бы пошел с
numpy
(scipy
для разреженного представления).Кроме того, вы можете подумать о хранении данных в
hdf5
сh5py
илиpytables
илиnetcdf4
сnetcdf4-python
на диске, а затем получить доступ к частям, которые вы необходимость.
Если вам нужно работать в оперативной памяти, попробуйте scipy.варианты разреженной матрицы . Она включает в себя алгоритмы для эффективного управления разреженными матрицами.