我有一个稀疏的 988x1 向量(在 csr_matrix
中的一个列)通过 scipy.sparse
创建。有没有一种方法可以得到它的平均值和标准差,而不必将稀疏矩阵转换为密集矩阵?
numpy.mean
似乎仅适用于密集向量。
我有一个稀疏的 988x1 向量(在 csr_matrix
中的一个列)通过 scipy.sparse
创建。有没有一种方法可以得到它的平均值和标准差,而不必将稀疏矩阵转换为密集矩阵?
numpy.mean
似乎仅适用于密集向量。
如果您正在执行列切片操作,使用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