2017-08-16 71 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