Как обрабатывать вычисления на огромном массиве numpy, чтобы избежать ошибки выделения памяти? - PullRequest
1 голос
/ 12 февраля 2020

Мне нужна отрицательная единичная матрица размера (62500 x 62500). объявление нормальной идентификационной матрицы с использованием numpy работает как талисман:

eye = np.eye(62500, 62500)

Однако выполнение чего-то подобного

negative_eye1 = np.negative(np.eye(62500, 62500))
# or
negative_eye2 = np.eye(62500, 62500) * -1

приведет к этой ошибке

Невозможно выделить массив с формой (62500, 62500) и типом данных float64

Затем матрица используется в функции scipy.sparse.bmat(), в результате чего получается матрица csr, в которой память не будет быть такой проблемой больше.

Как рассчитать эту матрицу?

1 Ответ

1 голос
/ 12 февраля 2020

Вы можете использовать scipy.sparse.eye (разреженная матрица с матрицами по диагонали):

from scipy import sparse

negative_eye = -sparse.eye(62500, 62500)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...