Python - лучшая структура данных для невероятно большой матрицы - PullRequest
3 голосов
/ 23 марта 2011

Мне нужно создать около 2 миллионов векторов с 1000 слотами в каждом (каждый слот просто содержит целое число).

Какая структура данных лучше всего подходит для работы с таким количеством данных?Возможно, я переоцениваю объем используемой обработки / памяти.

Мне нужно перебрать коллекцию файлов (всего около 34,5 ГБ) и обновлять векторы каждый раз, когда один из2 миллиона элементов (каждый соответствует вектору) встречаются в строке.

Я мог бы легко написать код для этого, но я знаю, что он не будет достаточно оптимальным для обработки объема данных, которыйВот почему я спрашиваю вас, эксперты.:) 1007

Бест, Джорджина

Ответы [ 3 ]

5 голосов
/ 23 марта 2011

Возможно, ваша машина привязана к памяти. Без очистки запущенных программ:

a = numpy.zeros((1000000,1000),dtype=int)

не вписывается в память. Но в целом, если вы можете разбить проблему так, что вам не нужен весь массив в памяти сразу, или вы можете использовать разреженное представление, я бы выбрал numpy (scipy для разреженного представления).

Кроме того, вы можете подумать о сохранении данных в hdf5 с h5py или pytables или netcdf4 с netcdf4-python на диске, а затем получить доступ к нужным частям.

1 голос
/ 23 марта 2011

Если вам нужно работать в ОЗУ, попробуйте варианты scipy.sparse matrix .Он включает алгоритмы для эффективного управления разреженными матрицами.

1 голос
/ 23 марта 2011

Использовать разреженную матрицу, предполагая, что большинство записей равно 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...