2013-07-18 16 views
6

Ich arbeite in einem Programm für Power System-Analyse und ich muss mit dünn besetzten Matrizen arbeiten.Fügen Sie Werte zu einer Scipy-Sparse-Matrix mit Indizes und Werten hinzu

Es ist eine Routine, wo ich eine Sparse Matrix füllen Sie einfach mit dem folgenden Aufruf:

self.A = bsr_matrix((val, (row,col)), shape=(nele, nbus), dtype=complex) 

Da diese Matrix wird nicht im Laufe der Zeit ändern. Noch eine andere Matrix ändert sich im Laufe der Zeit und ich muss sie aktualisieren. Gibt es eine Möglichkeit, dass, zum Beispiel:

co  = [ 2, 3, 6] 
row = [ 5, 5, 5] 
val = [ 0.1 + 0.1j, 0.1 - 0.2j, 0.1 - 0.4j] 

I diejenigen mit einer zuvor initialisiert Sparse Matrix hinzufügen kann? Wie wäre der pythischere Weg dazu?

Danke

Antwort

3

Sie stattdessen eine coo_matrix verwenden sollten, wo Sie die Attribute col, spärliche row und data einer zuvor erstellten Matrix ändern können:

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] 
+0

Danke. Ich habe in der Dokumentation gelesen, dass: _Bei der Konvertierung in CSR oder CSC-Format, werden doppelte (i, j) Einträge zusammen summiert. Dies erleichtert die effiziente Konstruktion von Finite-Elemente-Matrizen und dergleichen. (siehe Beispiel) _ Das löst mehr oder weniger das Problem, das ich hatte. In meinem Code gibt es mehrere Objekte, die zu dieser Matrix beitragen, und zwei Objekte können zu demselben (i, j) -Eintrag beitragen. Dies bedeutet, dass jedes Mal, wenn ich den Beitrag eines Objekts hinzufügen möchte ich die Matrix neu erstellen? – amalbe

+0

hi ... Ja, Sie können die verschiedenen Objekte verwenden, um die Matrix zu erstellen, indem Sie der 'coo_matrix' die Parameter' col' und 'row' zuweisen. Ich bin mir nicht sicher, ob "SciPy" eine interne Kopie erstellt oder nicht, wenn die spärliche Matrix erstellt wird –

Verwandte Themen