【问题标题】:Taking reciprocal of each elements in a sparse matrix?取稀疏矩阵中每个元素的倒数?
【发布时间】:2014-01-12 21:21:11
【问题描述】:

我下面有一个稀疏矩阵。

a = sparse.diags([1,2,3],[-1,0,1],shape=(6,6),format ="csr")

我想取稀疏矩阵中每个元素的倒数。 我在互联网上搜索它并注意到几乎没有提到采取倒数。 我知道 numpy 有一个互惠函数。 np.reciprocal() 但在我的情况下它不起作用。

它不必具有这样的互惠功能。如果有人可以提供两个相同大小的稀疏矩阵的元素除法函数,或者元素幂函数(-1 的幂),那也很棒。
太感谢了。

【问题讨论】:

标签: python scipy sparse-matrix


【解决方案1】:

如果只想取非零元素的倒数,可以使用

M.nonzero() = 1 / M.nonzero()

这取决于您使用的是哪种稀疏形式,这是否会很快!

或者借用Efficient way of taking Logarithm function in a sparse matrix,可以用

new_data = 1/M.data
M = csr_matrix((new_data, (M.row, M.col)), shape = M.shape)

或者(后期编辑,感谢 joeln),上面可以用

完成
np.reciprocal(M.data, out=M.data)

然后M的条目将被反转。

【讨论】:

  • 您不能分配给M.nonzero()。下一个选项将起作用,但可以使用 np.reciprocal(M.data, out=M.data) 就地执行操作。
猜你喜欢
  • 2012-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-11
  • 2021-12-30
  • 1970-01-01
  • 1970-01-01
  • 2017-02-26
相关资源
最近更新 更多