有效地减去 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()
来计算它?
没有有效的方法,因为除非你的均值几乎全为零,否则生成的矩阵不会是稀疏的。
您唯一的选择是单独转发此信息(例如,作为每列的常量偏移量)并适当更改您的算法,或者切换到密集矩阵。
比如说,我们有一个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()
来计算它?
没有有效的方法,因为除非你的均值几乎全为零,否则生成的矩阵不会是稀疏的。
您唯一的选择是单独转发此信息(例如,作为每列的常量偏移量)并适当更改您的算法,或者切换到密集矩阵。