Wie konvertiert man die sparse-matrix, Dichte form mit python
Habe ich die folgende matrix, die ich glaube, ist spärlich. Ich habe versucht, die Umwandlung zu dicht mit dem x.Dichte-format, aber es hat noch nie funktioniert. Irgendwelche Vorschläge, wie dies zu tun?, danke.
mx=[[(0, 2), (1, 1), (2, 1), (3, 1), (4, 1), (5, 3), (6, 4), (7, 2), (8, 5), (9, 1)],
[(10, 1), (11, 5), (12, 2), (13, 1), (21, 1), (22, 1), (23, 1), (24, 1), (25, 1), (26, 2)],
[(27, 2), (28, 1), (29, 1), (30, 1), (31, 2), (32, 1), (33, 1), (34, 1), (35, 1), (36, 1)]]
jemand legte die Lösung unten, aber gibt es einen besseren Weg?
def assign_coo_to_dense(sparse, dense):
dense[sparse.row, sparse.col] = sparse.data
mx.todense().
Soll die Ausgabe soll erscheinen in dieser form:[[2,1,1,1,1,3,4], [1,5,2,1,1,1,1], [2,1,1,1,2,1,1,1]]
Sind Sie mit numpy oder scipy?
Hallo Floris, ich bin mit numpy, aber es scheint, die meisten Leute angesprochen haben ähnliche Probleme mit Hilfe von scipy.
ist
Hi Saullo, Indizes Folgen von Werten.
Sie benötigen
Hallo Floris, ich bin mit numpy, aber es scheint, die meisten Leute angesprochen haben ähnliche Probleme mit Hilfe von scipy.
ist
mx
eine matrix mit Indizes oder Werte? In SciPy müssen Sie einer maximalen Abmessung von 2 für die sparse-matrix, die nicht scheinen, um euer Fall sein...Hi Saullo, Indizes Folgen von Werten.
Sie benötigen
x.todense()
, nicht x.dense()
.InformationsquelleAutor Tiger1 | 2013-08-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Liste Verständnis ist der einfachste Weg:
Ergebnis:
vielen Dank für die Lösung. Seine genau das, was ich suchte.
InformationsquelleAutor Akavall
Ihre Quell-Daten nicht wirklich Stimmen Sie die integrierten Formate unterstützt von sparse-Matrizen in SciPy (siehe http://docs.scipy.org/doc/scipy/reference/sparse.html und http://en.wikipedia.org/wiki/Sparse_matrix), so
.todense()
wird nicht wirklich produktiv sein hier. Insbesondere, wenn Sie so etwas wie:dann
my_sparseish_matrix
bereits ein dichtes numpy-array ! Aufruf.todense()
auf Sie an diesem Punkt wird ein Fehler erzeugt, und hat sowieso keinen Sinn.Also meine Empfehlung ist, bauen Ihre dichten Arrays explizit mit ein paar
for
Schleifen. Um dies zu tun müssen Sie wissen, wie viele Elemente möglich, die in den resultierenden Vektor-nennen wir esN
.Oh wow, das ist ein völlig anderes als das, was ich dachte, Sie waren gefragt ! Es wäre hilfreich, die angeben, dies in Ihrer Frage.
Hi Imjohns3, vielen Dank für die Lösung. es funktionierte, aber jedes Element sollte eine Liste; Werte, die durch Komma getrennt.Siehe Frage zum update. Dank
InformationsquelleAutor lmjohns3
Hier ist eine ziemlich hacky Weg, das zu tun, was Sie für Fragen :
Grundsätzlich wandelt jeden Wert aus der verschachtelte Tupel in einen string und verkettet alle strings zusammen, dann setzt das auch wieder eine ganze Zahl. Wiederholen Sie dies für jedes element
mx
.InformationsquelleAutor lmjohns3