【问题标题】:Multiply each element of a csr matrix column in Scipy将Scipy中的csr矩阵列的每个元素相乘
【发布时间】:2015-08-11 13:36:05
【问题描述】:

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

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

代码无异常运行,但矩阵保持不变。我必须先创建一个副本还是有其他方法可以解决问题?

谢谢

【问题讨论】:

  • ,multiply 不是就地操作。它返回一个新矩阵。

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


【解决方案1】:

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

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

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

_matrix[:, _index] *= 5

尽管如果不查看源代码就很难知道这是否真的发生或触发了某种形式的复制。

【讨论】:

  • 一定是inplace操作,因为M.data.__array_interface__['data']不会改变。仍然稀疏的*= 远不及等效的密集操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-19
  • 2019-03-28
  • 2017-04-16
  • 1970-01-01
  • 1970-01-01
  • 2020-06-21
相关资源
最近更新 更多