@immelnikoff
Изучаю БД

Как на каждый элемент бинарной матрицы выделить ровно один бит?

У меня алгоритм работает с бинарными матрицами (значения элементов 0 или 1) большого размера (~10000x10000).
Если данную матрицу представлять как двумерный список (list), то она занимает в памяти 16*10000*10000 = 1,6 ГБайт, что явно не мало.
Если же представлять как массив массивов (пакет array), то матрица в памяти занимает 2*10000*10000 = 0,2 ГБайт, что приятнее.
Естественно возникает вопрос, а есть ли возможность в python работать с подобными матрицами так, чтобы каждый элемент представлялся в виде одного бита? В этом случае данная матрица заняла бы всего 10000*10000/8 = 0,0125 ГБайт.
Сразу же отвечу на возражения, что 0,2 - 1,6 ГБайт - это немного. Данные бинарные матрицы могут быть сколь угодно большими.
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 1
@U235U235
Если матрица плотная, то можно упаковать numpy.packbits
Если разреженная, то см. https://docs.scipy.org/doc/scipy/reference/sparse.html
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы