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

6
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 / 32位 / 3GB RAM。


1
考虑使用内存映射,如果你真的需要一个如此庞大的产品矩阵。 - Iterator
1个回答

5

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

请确保您正在使用64位的Python和64位操作系统,因为一个由双精度浮点数组成的17770x20000矩阵需要2.8GB的RAM,这超过(或非常接近)大多数32位平台所能处理的范围。

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

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


你的意思是我的内存用完了吗? - zhongqi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接