Python 使用索引和值向Scipy稀疏矩阵添加值

Python 使用索引和值向Scipy稀疏矩阵添加值,python,numpy,scipy,sparse-matrix,Python,Numpy,Scipy,Sparse Matrix,我在一个电力系统分析程序中工作,我需要处理稀疏矩阵 有一个例程,我用以下调用填充稀疏矩阵: self.A = bsr_matrix((val, (row,col)), shape=(nele, nbus), dtype=complex) 因为这个矩阵不会随时间而改变。另一个矩阵确实会随着时间的推移而变化,我需要更新它。是否有一种方法,例如: co = [ 2, 3, 6] row = [ 5, 5, 5] val = [ 0.1 + 0.1j, 0.1 - 0.2j, 0.

我在一个电力系统分析程序中工作,我需要处理稀疏矩阵

有一个例程,我用以下调用填充稀疏矩阵:

self.A = bsr_matrix((val, (row,col)), shape=(nele, nbus), dtype=complex)
因为这个矩阵不会随时间而改变。另一个矩阵确实会随着时间的推移而变化,我需要更新它。是否有一种方法,例如:

co     = [ 2, 3, 6]
row    = [ 5, 5, 5]
val    = [ 0.1 + 0.1j, 0.1 - 0.2j, 0.1 - 0.4j]
我可以将它们添加到先前初始化的稀疏矩阵中吗?更具蟒蛇风格的方式是什么


谢谢

您应该改用
coo_矩阵
,在这里您可以更改以前创建的稀疏矩阵的属性
col
数据

from scipy.sparse import coo_matrix
nele=30
nbus=40
col    = [ 2, 3, 6]
row    = [ 5, 5, 5]
val    = [ 0.1 + 0.1j, 0.1 - 0.2j, 0.1 - 0.4j]
test = coo_matrix((val, (row,col)), shape=(nele, nbus), dtype=complex)

print test.col
#[2 3 6]
print test.row
#[5 5 5]
print test.data
#[ 0.1+0.1j  0.1-0.2j  0.1-0.4j]

非常感谢。我在文档中读到:默认情况下,当转换为CSR或CSC格式时,重复的(I,j)条目将汇总在一起。这有助于有效构造有限元矩阵等。(见示例)这或多或少解决了我遇到的问题。在我的代码中,有几个对象构成了这个矩阵,两个对象可以构成相同的(i,j)条目。这意味着,每次我想添加一个对象的贡献,我必须重建矩阵?嗨。。。可以,只需将
col
row
参数分配给
coo\u矩阵
,就可以使用不同的对象来构建矩阵。我不确定在构建稀疏矩阵时,
SciPy
是否会创建内部副本