Я хотел бы умножить две большие разреженные матрицы. Первый - 150 000 × 300 000, а второй - 300 000 × 300 000. Первая матрица содержит около 1 000 000 ненулевых элементов, а вторая матрица содержит около 20 000 000 ненулевых элементов. Есть ли простой способ получить произведение этих матриц?Умножение больших разреженных матриц в python
Я сейчас храню матрицы в формате csr или csc и пытаюсь matrix_a * matrix_b
. Это дает ошибку ValueError: array is too big
.
Я предполагаю, что я мог хранить отдельные матрицы на диске с помощью pytables, раздвигать их на более мелкие блоки и конструировать конечный матричный продукт из продуктов многих блоков. Но я надеюсь на что-то относительно простое воплощение.
EDIT: Я надеюсь на решение, которое работает для произвольно больших разреженных матриц, при этом скрывая (или избегая) бухгалтерию, участвуя в перемещении отдельных блоков назад и вперед между памятью и диском.
Какую форму должен иметь результат? – eumiro
@miro: 150 000 на 300 000. Но я ожидаю, что продукт все равно будет скудным. – DanB