ausgerichtet konstruieren Ich verwende Python, numpy und Scikit-Learn. Ich habe Daten Schlüssel und Werte, die in einer SQL-Tabelle gespeichert sind. Ich erhalte dies als eine Liste von Tupeln zurückgegeben als: [(id, value),...]
. Jede ID erscheint nur einmal in der Liste und die Tupel erscheinen in der Reihenfolge der aufsteigenden ID sortiert. Dieser Prozess ist ein paar Mal abgeschlossen, so dass ich mehrere Listen von key: value
Paaren habe. So dass:Wie ein numpy Array aus mehreren Vektoren, die mit Daten, die von ID
Schlüssel können über verschiedene Beispiele dupliziert werden, und jede Zeile kann eine andere Länge haben. Ein Beispiel dataset
könnte sein:
dataset = [[(1, 0.13), (2, 2.05)],
[(2, 0.23), (4, 7.35), (5, 5.60)],
[(2, 0.61), (3, 4.45)]]
Es ist ersichtlich, dass jede Zeile eine Probe ist, und daß einige IDs (in diesem Fall 2) in mehreren Proben erscheinen.
Problem: Ich möchte eineinzigen (möglicherweise sparse) numpy Array geeignet für die Verarbeitung mit konstruieren Scikit-Learn. Die Werte in Zusammenhang mit einem bestimmten Schlüssel (ID) für jede Probe sollen in der gleichen ‚Spalte‘ ausgerichtet werden, (wenn, dass die richtige Terminologie ist), dass die Matrix aus dem obigen Beispiel würde wie folgt aussehen:
ids = 1 2 3 4 5
------------------------------
dataset = [(0.13, 2.05, null, null, null),
(null, 0.23, null, 7.35, 5.60),
(null, 0.61, 4.45, null, null)]
Wie Sie sehen können, möchte ich auch die IDs von der Matrix entfernen (obwohl ich eine Liste von ihnen behalten muss, damit ich weiß, worauf sich die Werte in der Matrix beziehen. Jede erste Liste von key: value
Paaren kann mehrere tausend Zeilen und enthalten es kann mehrere tausend Stichproben geben, daher kann die resultierende Matrix sehr groß sein Bitte geben Sie Antworten, die Geschwindigkeit (innerhalb der Grenzen von Python), Speichereffizienz und Code-Klarheit berücksichtigen
Vielen, vielen Dank in adv für jede Hilfe.
Möglicherweise möchten Sie auf [ 'pandas'] (http://pandas.pydata.org/) zu sehen, die Array-Strukturen ähnlich wie dies markiert bietet. – BrenBarn