2012-06-14 109 views
2

我需要做下面的大转换矩阵来稀疏矩阵在python

b = numpy.random.randn(50001,2) 

cof = numpy.corrcoef(b) 

c= b>=0.3 

return np.dot(c, np.ones([50001,1])) 

它扔我分割故障。

另外,如果我尝试使用稀疏矩阵,例如:

asp = scipy.sparse.csc_matrix(c) 

我得到一个分割故障

如果矩阵尺寸小的改建工程。

有什么建议吗?

+1

哪条线路是违规的? (它是否与'numpy.corrcoef'一起?) – huon

+3

问题是您的50001x2输入的相关矩阵将是50001x50001。那是超过20G的RAM,我怀疑你没有。 – talonmies

+0

我得到相关矩阵。当我尝试使用一个向量的点积时,它给了我一个分段错误。这行应该让我回到每个坐标np.dot(c,np.ones([50001,1]),dtype = float)的程度,但是我得到一个seg错误。我有一个有48个内核和260 GB内存的服务器。不过,我只用一个核心来运行它。我不确定它为一个内核消耗了多少内存。 –

回答

1

您是否试图计算50001维空间的两个样本或50001个二维空间样本之间的相关性?

在您当前的情况下,您正在创建隐式50001 x 50001协方差矩阵(导致段错误)。执行以下操作不会炸毁内存

b = numpy.random.randn(2,50001) 
cof = numpy.corrcoef(b) 

希望这是你所需要的(另一种方式得到你的协方差矩阵的一个真正的穷人逼近和段错误)。