在python中将大矩阵转换为稀疏矩阵

时间:2012-06-14 04:06:59

标签: python numpy scipy

我需要做以下

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 个答案:

答案 0 :(得分:1)

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

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

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

希望这就是你所需要的(另一种方式会产生非常差的协方差矩阵和段错误)。