我需要形成总尺寸为2,886 X 2,003,817的2D矩阵。我尝试使用numpy.zeros制作一个2D零元素矩阵,然后计算并分配Matrix的每个元素(大多数都是零子,我需要替换它们中的一些)。
但是当我尝试numpy.zero来初始化我的矩阵时,我得到以下内存错误:
C=numpy.zeros((2886,2003817)) "MemoryError"
我也尝试在没有初始化的情况下形成矩阵。基本上我在算法的每次迭代中计算每一行的元素,然后
C=numpy.concatenate((C,[A]),axis=0)
其中C是我的最终矩阵,A是当前迭代的计算行。但是我发现这个方法花了很多时间,我猜这是因为使用了numpy.concatenate(?)
如果有办法在初始化矩阵时避免记忆错误,或者有没有更好的方法或建议来形成这个尺寸的矩阵,请告诉我吗?
谢谢, 阿米尔
答案 0 :(得分:2)
如果您的数据中包含大量零,则应使用scipy.sparse矩阵。
这是一种特殊的数据结构,旨在为具有大量零的矩阵节省内存。但是,如果您的矩阵不是稀疏的,稀疏矩阵开始占用更多内存。稀疏矩阵有很多种,每种稀疏矩阵都有效,而另一种东西效率低,所以要小心选择。