¿Cómo acceder a los campos en una estructura importada desde un archivo .mat usando loadmat en Python?

Siguiendo esta pregunta que pregunta (y responde) cómo leer los archivos .mat que se crearon en Matlab usando Scipy, quiero saber cómo acceder a los campos en las estructuras importadas.

Tengo un archivo en Matlab desde el cual puedo importar una estructura:

>> load bla % imports a struct called G >> G G = Inp: [40x40x2016 uint8] Tgt: [8x2016 double] Ltr: [1x2016 double] Relevant: [1 2 3 4 5 6 7 8] 

Ahora quiero hacer lo mismo en Python:

 x = scipy.io.loadmat('bla.mat') >>> x {'__version__': '1.0', '__header__': 'MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Wed Jun 07 21:17:24 2006', 'G': array([[]], dtype=object), '__globals__': []} >>> x['G'] array([[]], dtype=object) >>> G = x['G'] >>> G array([[]], dtype=object) 

La pregunta es, ¿cómo puedo acceder a los miembros de la estructura G: Inp , Tgt , Ltr y Relevant , de la forma que puedo en Matlab?

Primero, recomiendo actualizar a Scipy svn si es posible: ha habido un desarrollo activo de matlab io con algunos incrementos de velocidad realmente dramáticos recientemente.

También como se mencionó, podría valer la pena probar con struct_as_record=True . Pero, de lo contrario, deberías poder sacarlo jugando interactivamente.

Su G es una matriz de objetos mio struct, por ejemplo, puede verificar G.shape . En este caso, creo que G = x['G'][0,0] debe proporcionar el objeto que desea. Entonces deberías poder acceder a G.Inp etc.