在稀疏矩阵中考虑每个元素的倒数?

时间:2014-01-12 21:21:12

标签: python scipy sparse-matrix

我下面有一个稀疏矩阵。

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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的条目将被反转。