sqrt用于逐元素稀疏矩阵

时间:2014-01-12 02:45:45

标签: python numpy scipy sparse-matrix sqrt

我有一个稀疏矩阵:

from scipy import sparse
a = sparse.diags([1,4,9],[-1,0,1],shape =(10,10),format ="csr")

我想取稀疏矩阵中每个元素的平方根 我查看了互联网,它说我可以使用numpy.sqrt()来实现这一点。 但是错误发生了:

  b = numpy.sqrt(a)
  AttributeError: sqrt

我该怎么办?

2 个答案:

答案 0 :(得分:2)

警告,这将创建一个结果numpy ndarray而不是稀疏的csr数组。

from scipy import sparse
a = sparse.diags([1,4,9],[-1,0,1],shape =(10,10),format ="csr")

numpy.sqrt(a.data)

据我所知,除了sqrt之外,大多数其他ufunc操作(sin,cos,...)都有稀疏的ufunc,不知道原因。请参阅此问题:https://github.com/scipy/scipy/pull/208

答案 1 :(得分:1)

如果你想返回稀疏矩阵(你几乎肯定会这样做!),你可以将函数应用到Node

a.data

此答案归功于DSM's comment