我有一个通过csr_matrix
创建的稀疏988x1向量(scipy.sparse
中的一列)。有没有办法得到它的均值和标准偏差而不必将稀疏矩阵转换为密集矩阵?
numpy.mean
似乎只适用于密集向量。
答案 0 :(得分:7)
由于您正在执行列切片,因此最好使用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