如果我有一个大的 csr_matrix A,我想对它的列求和,
A.sum(axis=0)
这只是为我做的,对吗?对应的轴值是:1->rows, 0->columns?
当我想对列表中指定的某些权重的列进行求和时,我卡住了,例如 [1 2 3 4 5 4 3 ... 4 2 5] 的长度与 csr_matrix A 中的行数相同。更清楚一点,我想要每个列向量与这个权重向量的内积。如何使用 Python 实现这一点?
这是我的代码的一部分:
uniFeature = csr_matrix(uniFeature)
[I,J] = uniFeature.shape
sumfreq = uniFeature.sum(axis=0)
sumratings = []
for j in range(J):
column = uniFeature.getcol(j)
column = column.toarray()
sumtemp = np.dot(ratings,column)
sumratings.append(sumtemp)
sumfreq = sumfreq.toarray()
average = np.true_divide(sumratings,sumfreq)
(Numpy 导入为 np)有一个权重向量“ratings”,程序应该输出矩阵“uniFeature”每一列的平均评分。
我尝试直接用评级(这是一个列表)来点 column=uniFeature.getcol(j),但是有一个错误说格式不同意。在 column.toarray() 之后就可以了,然后加上评级。但是,是不是让每一列都回到密集的形式失去了稀疏矩阵的意义,并且会很慢?我运行了上面的代码,显示结果太慢了。我想应该有一种方法可以有效地将向量“评级”与稀疏矩阵的每一列点在一起。
提前致谢!