稀疏矩阵的逐元素绝对值

r.v*_*r.v 2 python scipy sparse-matrix

如何获得稀疏复矩阵的逐元素绝对值?一般来说,是否可以使用用户定义的函数将一个矩阵映射到另一个矩阵?

War*_*ser 5

scipy 中的稀疏矩阵对象实现了该方法__abs__()。这意味着您可以使用Python的内置 abs()函数。它将调用该__abs__()方法。例如,

In [16]: from scipy.sparse import csr_matrix

In [17]: a = csr_matrix([[1+1j, 0, 0, 0], [0, -2, 0, 0], [0, 0, 0, 0], [3-4j, 0, -5j, 0]])

In [18]: a.A
Out[18]: 
array([[ 1.+1.j,  0.+0.j,  0.+0.j,  0.+0.j],
       [ 0.+0.j, -2.+0.j,  0.+0.j,  0.+0.j],
       [ 0.+0.j,  0.+0.j,  0.+0.j,  0.+0.j],
       [ 3.-4.j,  0.+0.j,  0.-5.j,  0.+0.j]])

In [19]: b = abs(a)

In [20]: b.A
Out[20]: 
array([[ 1.41421356,  0.        ,  0.        ,  0.        ],
       [ 0.        ,  2.        ,  0.        ,  0.        ],
       [ 0.        ,  0.        ,  0.        ,  0.        ],
       [ 5.        ,  0.        ,  5.        ,  0.        ]])
Run Code Online (Sandbox Code Playgroud)