KDTree Objekt in Python speichern?

8

Ich benutze Scipys KDTree-Implementierung, um eine große Datei von 300 MB zu lesen. Nun, gibt es eine Möglichkeit, die Datenstruktur einfach auf der Festplatte zu speichern und neu zu laden, oder stehe ich beim Lesen roher Punkte aus der Datei fest und konstruiere die Datenstruktur jedes Mal, wenn ich mein Programm starte? Ich baue den KDTree wie folgt:

%Vor%

Irgendwelche Vorschläge bitte?

    
Legend 24.04.2011, 20:58
quelle

1 Antwort

10

KDtree verwendet verschachtelte Klassen, um seine Knotentypen (innernode, leafnode) zu definieren. Pickle funktioniert nur auf Klassen-Definitionen auf Modulebene, so dass eine verschachtelte Klasse es auslöst:

%Vor%

Allerdings gibt es einen (hacky) Workaround, indem Sie die Klassendefinitionen in den Bereich scipy.spatial.kdtree at module patchen, damit der Abbeizer sie finden kann. Wenn Ihr gesamter Code, der eingelegte KDtree-Objekte liest und schreibt, diese Patches installiert, sollte dieser Hack funktionieren:

%Vor%

Ausgabe:

%Vor%     
samplebias 25.04.2011, 00:27
quelle