2013-12-14 2 views
-4

Я пытаюсь обработать набор данных для поиска реальности с помощью scipy.scipy.io.loadmat() не возвращает словарь

Метод loadmat() не возвращает словарь.

код Python http://dl.dropboxusercontent.com/u/1800572/blog/parse_network.py

Dataset: http://realitycommons.media.mit.edu/RealityMining.zip

Я получаю эту ошибку, когда я запускаю скрипт на наборе данных. AttributeError (numpy.void) my_hashedNumber нет такого атрибута.

+0

Вы пытались отладить это? Есть много хороших отладчиков: pdb, pudb, ipdb и т. Д. –

+0

Почему вы используете Dropbox для отправки кода? o_O – brasofilo

+0

По крайней мере, дайте нам часть стека ошибок. На какой строке в вашем скрипте возникает этот «атрибут»? Единственное место, которое относится к загруженному объекту в качестве словаря: «def get_events (matlab_obj): ... subject = matlab_obj [" s "] [0]' – hpaulj

ответ

2

Почему, на ваш взгляд, это объект loadmat, не имеющий словаря? Ошибка по адресу:

def get_events(matlab_obj): 
    ... 
    subjects = matlab_obj["s"][0] 
    ... 
    for subject_object in subjects: 
     try: 
      subject_hash = subject_object.my_hashedNumber[0][0] # AttributeError here 

matlab_obj["s"] успешно осуществляет доступ к загруженному объекту в качестве словаря. subjects - это массив записей с цифрой (106,) и 58 полей. Правильный способ доступа к одному из этих полей: subject_object['my_hashedNumber'].

Если поле многомерное, оно должно быть проиндексировано с помощью [0,0], а не [0][0].

Смежные вопросы