8

我有一个csr_matrix通过scipy.sparse. 有没有一种方法可以在不必将稀疏矩阵转换为密集矩阵的情况下获得其均值和标准差?

numpy.mean似乎只适用于密集向量。

4

1 回答 1

8

由于您正在执行列切片,因此使用 CSC 而不是 CSR 存储矩阵可能会更好。但这取决于您对矩阵的其他操作。

要计算 CSC 矩阵中列的平均值,您可以使用矩阵的mean()函数。

要有效地计算标准差,只需要付出更多的努力。首先,假设你得到这样的稀疏列:

col = A.getcol(colindex)

然后像这样计算方差:

N = col.shape[0]
sqr = col.copy() # take a copy of the col
sqr.data **= 2 # square the data, i.e. just the non-zero data
variance = sqr.sum()/N - col.mean()**2
于 2013-03-29T11:39:35.603 回答