如何处理巨大的numpy数组以避免内存分配错误?

问题描述 投票:0回答:1

我需要一个大小为(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矩阵,其中的存储不再是问题。

如何计算此矩阵?

python numpy scipy sparse-matrix
1个回答
1
投票

您可以使用scipy.sparse.eye(对角线上带有1的稀疏矩阵:

from scipy import sparse

negative_eye = -sparse.eye(62500, 62500)
© www.soinside.com 2019 - 2024. All rights reserved.