Умножение больших разреженных матриц в питоне

Я хотел бы перемножить две большие разреженные матрицы. Первый — 150 000 x 300 000, а второй — 300 000 x 300 000. Первая матрица содержит около 1 000 000 ненулевых элементов, а вторая матрица содержит около 20 000 000 ненулевых элементов.Есть ли простой способ получить произведение этих матриц?

Сейчас я сохраняю матрицы в формате csr или csc и пробую matrix_a * matrix_b. Это дает ошибку ValueError: array is too big.

Я предполагаю, что я мог бы хранить отдельные матрицы на диске с помощью pytables, разбивать их на более мелкие блоки и создавать конечный матричный продукт из продуктов многих блоков. Но я надеюсь на что-то относительно простое в реализации.

РЕДАКТИРОВАТЬ: Я надеюсь найти решение, которое работает для произвольно больших разреженных матриц, скрывая (или избегая) учета, связанного с перемещением отдельных блоков между памятью и диском.

7
задан DanB 14 June 2012 в 17:38
поделиться