使用索引和值将值添加到Scipy稀疏矩阵

时间:2013-07-18 01:44:45

标签: 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.1 - 0.4j]

我可以添加到以前初始化的稀疏矩阵中吗?怎么会有更多的pythonic方式呢?

谢谢

1 个答案:

答案 0 :(得分:3)

您应该改为使用coo_matrix,您可以在其中更改先前创建的稀疏矩阵的属性colrowdata

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]