2017-08-16 54 views
1

我似乎在解决可能是一个非常简单的问题时遇到了困难。我保存了一个包含单个变量的* .npz文件 - 一个类Network的对象(我写的一个类)。无法从单个项目的numpy数组中提取对象

# Initialize network 
burstNetwork = Network(numChs,dt,UFRs,NBPs,BDs,UFRsByChan,varyFRbyChs,minChConstBurst,createChCorrelations) 
if saveData: 
    pd.np.savez((saveDir + "simulator.npz"), burstNetwork=burstNetwork) 

当我试图回到读取数据时,我发现我的变化是现在的尺寸为1的numpy的阵列,我无法给指数的形式,因而无法让我的网络对象返回并查看其属性(我的最终目标)。

# Load network 
simulator = np.load(simFilesDir + "simulator.npz") 
network = simulator['burstNetwork'] 
network 

Out[43]: array(<__main__.Network object at 0x000000000AEF0C18>, dtype=object) 

索引尝试:

network[0] 

--------------------------------------------------------------------------- 
IndexError        Traceback (most recent call last) 
<ipython-input-44-297be643431d> in <module>() 
----> 1 network[0] 

IndexError: too many indices for array 

请指点。

回答

1

索引数组时,您需要一个长度匹配的元组。这是0d,所以元组必须为0长度,()item方法也适用。

In [922]: arr = np.array(1, dtype=object) 
In [923]: arr.shape 
Out[923]:() 
In [924]: arr 
Out[924]: array(1, dtype=object) 
In [925]: arr.item() 
Out[925]: 1 
In [926]: arr[()] 
Out[926]: 1