有效地减去 Python 中稀疏矩阵列的平均值

Efficiently subtract the mean off the columns of a sparse matrix in Python

比如说,我们有一个scipy稀疏矩阵

from scipy.sparse import csc_matrix
mat = scipy.sparse.csc_matrix([[0, 1, 2]
                               [0, -1, 3]])

柱状均值是0, 0, 2.5 所以从一列的每个元素中减去列均值后的结果应该是,

[
   [0, 1, -.5]
   [0, -1, .5]
]

由于矩阵很大,有没有一种有效的方法,即不使用.toarray()来计算它?

没有有效的方法,因为除非你的均值几乎全为零,否则生成的矩阵不会是稀疏的。

您唯一的选择是单独转发此信息(例如,作为每列的常量偏移量)并适当更改您的算法,或者切换到密集矩阵。