Python Scipy CSR矩阵元素式加法

Python Scipy CSR矩阵元素式加法,python,scipy,sparse-matrix,Python,Scipy,Sparse Matrix,与numpy阵列/矩阵不同,CSR矩阵似乎不允许自动广播。CSR实现中有元素相乘的方法,但没有加法。如何通过标量有效地添加到CSR稀疏矩阵?这里,我们希望向非零项添加标量,而不使用矩阵 稀疏性,即不接触零条目 从(**emphasis**是我的): 所以我试过了(第一部分是从参考文档中“偷来的”) 它起作用了。如果保存原始矩阵,可以使用构造函数 使用修改后的数据数组 免责声明 这个答案解决了这个问题的解释 我有一个稀疏矩阵,我想给非零项添加一个标量,保持矩阵及其编程表示的稀疏性 我选择这种解

与numpy阵列/矩阵不同,CSR矩阵似乎不允许自动广播。CSR实现中有元素相乘的方法,但没有加法。如何通过标量有效地添加到CSR稀疏矩阵?

这里,我们希望向非零项添加标量,而不使用矩阵 稀疏性,即不接触零条目


从(
**emphasis**
是我的):

所以我试过了(第一部分是从参考文档中“偷来的”)

它起作用了。如果保存原始矩阵,可以使用构造函数 使用修改后的数据数组


免责声明

这个答案解决了这个问题的解释

我有一个稀疏矩阵,我想给非零项添加一个标量,保持矩阵及其编程表示的稀疏性

我选择这种解释的理由是,向所有条目添加标量会使稀疏矩阵变成非常密集的矩阵

如果这是正确的解释,我不知道:一方面,OP批准了我的答案(至少今天是2017-07-13),另一方面,在他们问题下面的评论中,他们似乎有不同的观点


然而,在稀疏矩阵表示的用例中,答案是有用的,例如,稀疏测量,您希望纠正测量偏差,减去平均值,等等。因此,我将把它留在这里,即使它可能被判断为有争议。

我在添加一行中回答了类似的问题。添加标量后,矩阵不再稀疏;与标量相乘可以保持稀疏性(没有新的非零元素)。加法还应更新表示稀疏性的整数(通常为0)。csr矩阵上应该有一个方法在内部处理所有这些问题。没有这样的变量。这个包的根在线性代数中。在此之前,将通过代数方法消除线性方程的偏移量。Panadas稀疏格式允许非零的
fill
(例如
nan
)。
fill
值为零的假设贯穿计算方法。乘法特别假设,如果任一参数的元素值为零,则乘积为零,因此可以采用快捷方式。它只需要处理非零值。
sparse
不仅仅是保存数据存储需求。
Attributes

nnz                   Get the count of explicitly-stored values (nonzeros)  
has_sorted_indices    Determine whether the matrix has sorted indices  
dtype (dtype)         Data type of the matrix  
shape (2-tuple)       Shape of the matrix  
ndim  (int)           Number of dimensions (this is always 2)  
**data                CSR format data array of the matrix** 
indices               CSR format index array of the matrix  
indptr                CSR format index pointer array of the matrix
In [18]: from scipy import *

In [19]: from scipy.sparse import *

In [20]: row = array([0,0,1,2,2,2])
    ...: col = array([0,2,2,0,1,2])
    ...: data =array([1,2,3,4,5,6])
    ...: a = csr_matrix( (data,(row,col)), shape=(3,3))
    ...: 

In [21]: a.todense()
Out[21]: 
matrix([[1, 0, 2],
        [0, 0, 3],
        [4, 5, 6]], dtype=int64)

In [22]: a.data += 10

In [23]: a.todense()
Out[23]: 
matrix([[11,  0, 12],
        [ 0,  0, 13],
        [14, 15, 16]], dtype=int64)

In [24]: