我正在尝试计算稀疏行矩阵中每一行非零值的平均值。使用矩阵的平均方法并不能实现此目的:
以下方法对于较大的矩阵来说是可以工作的,但速度较慢:
>>> from scipy.sparse import csr_matrix
>>> a = csr_matrix([[0, 0, 2], [1, 3, 8]])
>>> a.mean(axis=1)
matrix([[ 0.66666667],
[ 4. ]])
以下方法对于较大的矩阵来说是可以工作的,但速度较慢:
>>> import numpy as np
>>> b = np.zeros(a.shape[0])
>>> for i in range(a.shape[0]):
... b[i] = a.getrow(i).data.mean()
...
>>> b
array([ 2., 4.])
请问有更快的方法吗?
counts[counts == 0] = 1
,但不知道是否是最好的选择。逻辑是,如果计数为0,则总和在该位置上也必须为0。因此,如果我们想保持为0,则无论我们除以什么都无所谓。 - Luca Guarro