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

时间:2011-08-19 18:44:41

标签: python numpy matrix-multiplication

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乘法来说是否太大了?

BTW,我用python2.6.6 / 32bit / 3GB RAM测试

1 个答案:

答案 0 :(得分:5)

我可以在我的机器上计算ma*mb(64位Ubuntu上的Python 2.7.1 |EPD 7.0-2 (64-bit))。

确保在64位操作系统上使用64位Python,因为17770x20000双精度浮点矩阵需要2.8GB的RAM,这超出(或非常接近)大多数32位平台的能力处理

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

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