无法从单个项目的numpy数组中提取对象
问题描述:
我似乎在解决可能是一个非常简单的问题时遇到了困难。我保存了一个包含单个变量的* .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
请指点。
答
索引数组时,您需要一个长度匹配的元组。这是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