Python矩阵乘法:如何处理超大矩阵?

6 投票
1 回答
3275 浏览
提问于 2025-04-16 23:58
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内存的环境下测试的。

1 个回答

5

我可以在我的电脑上计算 ma*mb(我用的是 Python 2.7.1 |EPD 7.0-2 (64-bit),在64位的Ubuntu系统上)。

确保你在64位的操作系统上使用64位的Python,因为一个17770x20000的矩阵,里面存的是双精度浮点数,需要2.8GB的内存,这个内存量超过了大多数32位系统能处理的范围,或者说非常接近这个上限。

根据你的需求,使用单精度浮点数(numpy.float32)也是一个选择。

最后,如果你的矩阵是稀疏的,或者有特定的结构,你可能想要利用这些特点来减少内存的使用。

撰写回答