创建非常大的numpy数组时出现MemoryError [重复]
问题内容:
这个问题已经在这里有了答案 :
Numpy内存错误创建了巨大的矩阵 (3个答案)
3年前关闭。
我正在尝试创建一个非常大的零零的numpy数组,然后将另一个数组中的值复制到零的大数组中。我正在使用Pycharm,并且不断得到:MemoryError
即使我尝试仅创建数组。这是我尝试创建零数组的方式:
import numpy as np
last_array = np.zeros((211148,211148))
我试图按照以下问题将Pycharm中的内存堆从750m增加到1024m:https
://superuser.com/questions/919204/how-can-i-increase-the-memory-heap-in-
pycharm ,但是这似乎没有帮助。
让我知道您是否需要进一步的澄清。谢谢!
问题答案:
研究使用scipy中的稀疏数组功能:
scipy.sparse文档。
此处的scipy.sparse库提供了一组示例和教程:
Scipy讲义:SciPy中的稀疏矩阵
这可以帮助您解决内存问题,并使一切运行得更快。
要创建一个空的稀疏数组,并按您在注释中的要求在某些位置放置值:
有什么方法可以创建一个在某些位置具有值的空数组,例如:last_array [211147] [9],但其他地方都是空的?
from scipy.sparse import *
values = [42]
row_ind = [211147]
col_ind = [9]
last_array = csc_matrix((values, (row_ind, col_ind)), shape=(211148,211148))
print(last_array[211147,9])