Ich möchte in der Lage sein, meine Array-Unterklasse in einer NPY-Datei zu speichern und das Ergebnis später wiederherzustellen.Wie kann ich np.save für eine ndarray-Unterklasse arbeiten lassen?
Etwas wie:
>>> class MyArray(np.ndarray): pass
>>> data = MyArray(np.arange(10))
>>> np.save('fname', data)
>>> data2 = np.load('fname')
>>> assert isinstance(data2, MyArray) # raises AssertionError
the docs sagt (Hervorhebung von mir):
Das Format explizit braucht nicht zu:
- [...]
- Fully handle beliebige Unterklassen von numpy.darray. Unterklassen werden zum Schreiben akzeptiert, aber nur die Array-Daten werden ausgeschrieben. Ein reguläres numpy.darray-Objekt wird beim Lesen der Datei erstellt. Die API kann verwendet werden, um ein Format für eine bestimmte Unterklasse, aber zu erstellen, das für das allgemeine NPY-Format nicht verfügbar ist.
So ist es möglich, den obigen Code zu machen keinen AssertionError erhöhen?
Fragen Sie, wie Sie Daten in der 'npy'-Datei speichern, damit numpy Ihre Unterklasse beim Zurücklesen der Daten kennt (über numpy.load)? Ist eine Lösung, in der Sie [View-Casting] (http://docs.scipy.org/doc/numpy/user/basics.classing.html#view-casting) verwenden _nach_ Lesen der Daten als vanille-artiges Array OK? – mgilson
@mgilson: View Casting ist nicht ganz. Ich möchte, dass die Datei codiert, in welcher Klasse sie angezeigt werden sollte, nicht der Programmierer. Außerdem könnte ich im Idealfall einige Metadaten speichern, die den Eigenschaften meiner Klasse entsprechen. – Eric