2013-12-14 51 views
-4

我一直在尝试用scipy处理现实挖掘数据集。scipy.io.loadmat()不返回字典

loadmat()方法不返回字典。

Python代码 http://dl.dropboxusercontent.com/u/1800572/blog/parse_network.py

数据集:http://realitycommons.media.mit.edu/RealityMining.zip

当我运行的数据集剧本我得到这个错误。 AttributeError(numpy.void)my_hashedNumber没有这样的属性。

+0

你试过调试过吗?有许多优秀的调试器:pdb,pudb,ipdb等 –

+0

为什么使用Dropbox发布代码? o_O – brasofilo

+0

至少给我们一部分的错误堆栈。在你的脚本的哪一行会出现这个'AttributeError'?唯一将加载对象视为字典的地方是:'def get_events(matlab_obj):... subjects = 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]