大数据数组

时间:2014-03-31 01:56:54

标签: python numpy matrix large-data

我需要形成总尺寸为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(?)

如果有办法在初始化矩阵时避免记忆错误,或者有没有更好的方法或建议来形成这个尺寸的矩阵,请告诉我吗?

谢谢, 阿米尔

1 个答案:

答案 0 :(得分:2)

如果您的数据中包含大量零,则应使用scipy.sparse矩阵。

这是一种特殊的数据结构,旨在为具有大量零的矩阵节省内存。但是,如果您的矩阵不是稀疏的,稀疏矩阵开始占用更多内存。稀疏矩阵有很多种,每种稀疏矩阵都有效,而另一种东西效率低,所以要小心选择。