我想将两个大型稀疏矩阵相乘。第一个是 150,000x300,000,第二个是 300,000x300,000。第一个矩阵有大约 1,000,000 个非零项,第二个矩阵有大约 20,000,000 个非零项。有没有一种直接的方法来获得这些矩阵的乘积?
我目前以 csr 或 csc 格式存储矩阵并尝试matrix_a * matrix_b
. 这给出了错误ValueError: array is too big
。
我猜我可以用 pytables 将单独的矩阵存储在磁盘上,将它们分成更小的块,然后从许多块的乘积中构造最终的矩阵乘积。但我希望实现一些相对简单的东西。
编辑:我希望有一个适用于任意大的稀疏矩阵的解决方案,同时隐藏(或避免)在内存和磁盘之间来回移动单个块所涉及的簿记。