scipy.io.loadmat verschachtelte Strukturen (d. h. Wörterbücher)

Verwendung der angegebenen Routinen (wie load Matlab .mat-Dateien mit scipy), ich konnte nicht auf tiefer verschachtelte Strukturen zu erholen, Sie in Wörterbücher

Präsentieren das problem, das ich laufen in mehr detail, ich gebe das folgende Spielzeug-Beispiel:

load scipy.io as spio
a = {'b':{'c':{'d': 3}}}
# my dictionary: a['b']['c']['d'] = 3
spio.savemat('xy.mat',a)

Nun will ich Lesen Sie die mat-Datei wieder in python. Ich habe versucht, die folgenden:

vig=spio.loadmat('xy.mat',squeeze_me=True)

Wenn ich jetzt zugreifen will, die Felder die ich bekomme:

>> vig['b']
array(((array(3),),), dtype=[('c', '|O8')])
>> vig['b']['c']
array(array((3,), dtype=[('d', '|O8')]), dtype=object)
>> vig['b']['c']['d']
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)

/<ipython console> in <module>()

ValueError: field named d not found.

Jedoch mithilfe der option struct_as_record=False Bereich zugegriffen werden konnte:

v=spio.loadmat('xy.mat',squeeze_me=True,struct_as_record=False)

Nun war es möglich, um es von

>> v['b'].c.d
array(3)

InformationsquelleAutor der Frage mergen | 2011-08-10

Schreibe einen Kommentar