在Scipy中乘以csr矩阵列的每个元素

时间:2015-08-11 13:36:05

标签: python matrix scipy sparse-matrix matrix-multiplication

如何将csr矩阵的特定列与固定值相乘(例如5) 我的方法似乎不起作用。首先,我创建一个与填充了我的默认值的矩阵列大小相同的update_vector。然后我利用Scipy csr矩阵的乘法 -

_column = _matrix.getcol(_index)
update_vector = numpy.tile(5, (_column.shape[0], 1))
_matrix[:, _index].multiply(update_vector)

代码运行无例外,但矩阵保持不变。我是否必须先创建一个副本,还是有另一种方法来解决问题?

谢谢

1 个答案:

答案 0 :(得分:2)

就地执行此操作的低级方法类似于:

_matrix.data[_matrix.indices == _index] *= 5

如果你不能简单地做,我会感到惊讶:

_matrix[:, _index] *= 5

虽然很难知道这是否真的到位或者在没有查看源代码的情况下触发某种形式的复制。