умножение матриц питона: как обрабатывать очень большие матрицы? - PullRequest
6 голосов
/ 19 августа 2011
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

1 Ответ

5 голосов
/ 19 августа 2011

Я могу вычислить ma*mb на моей машине (Python 2.7.1 |EPD 7.0-2 (64-bit) на 64-битной Ubuntu).

Убедитесь, что вы используете 64-битный Python в 64-битной ОС, поскольку матрица с плавающей запятой двойной точности 17770x20000 требует 2,8 ГБ ОЗУ, что превышает (или очень близко) то, что может большинство 32-битных платформ ручка.

В зависимости от ваших требований возможно использование поплавков одинарной точности (numpy.float32).

Наконец, если ваши матрицы разрежены или имеют структуру, вы, возможно, захотите использовать это для уменьшения требований к памяти.

...