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测试
答案 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
)。
最后,如果您的矩阵稀疏或具有结构,您可能需要考虑利用它来减少内存需求。