python矩阵乘法:如何处理非常大的矩阵?

a = numpy.zeros((17770,5))

b = numpy.zeros((5,20000))

ma = numpy.matrix(a)

mb = numpy.matrix(b)

也就是说,ma.shape =(17770,5),mb.shape =(5,20000),两者都是numpy.matrix.

我需要ma * mb.但是我收到错误消息“ValueError:array is too big”.

这些矩阵对于Python乘法来说是否太大了?

顺便说一下,我测试了python2.6.6 / 32bit / 3GB RAM

最佳答案
我可以在我的机器上计算ma * mb(64位Ubuntu上的Python 2.7.1 | EPD 7.0-2(64位)).

确保在64位操作系统上使用64位Python,因为17770×20000双精度浮点矩阵需要2.8GB的RAM,这超过(或非常接近)大多数32位平台可以处理的内容.

根据您的要求,也可能使用单精度浮点数(numpy.float32).

最后,如果您的矩阵稀疏或具有结构,您可能需要考虑利用它来减少内存需求.

转载注明原文:python矩阵乘法:如何处理非常大的矩阵? - 代码日志