我正在尝试使用下面的代码将一个数组值与上一个和下一个数组进行比较,但是我在数组错误中得到了太多的索引,我想绕过它,但是我不知道如何。
spikes=print(M.V[0])
#iterate in list of M.V[0] with three iterators to find the spikes
for i,x in enumerate(M.V[0]):
if (i>=1):
if x[i-1]<x[i] & x[i]>x[i+1] & x[i]>25*mV:
spikes+=1
print(spikes)
我得到这个错误:
IndexError Traceback (most recent call last)
<ipython-input-24-76d7b392071a> in <module>
3 for i,x in enumerate(M.V[0]):
4 if (i>=1):
----> 5 if x[i-1]<x[i] & x[i]>x[i+1] & x[i]>25*mV:
6 spikes+=1
7 print(spikes)
~/anaconda3/lib/python3.6/site-packages/brian2/units/fundamentalunits.py in __getitem__(self, key)
1306 single integer or a tuple of integers) retain their unit.
1307 '''
-> 1308 return Quantity(np.ndarray.__getitem__(self, key), self.dim)
1309
1310 def __getslice__(self, start, end):
IndexError: too many indices for array
请注意,M.V [0]本身就是一个数组
答案 0 :(得分:0)
您说“ M.V [0]本身就是一个数组”。但是,您需要详细说明。 M可能是https://brian2.readthedocs.io/en/stable/user/recording.html#recording-spikes中详述的StateMonitor对象。这是正确的吗?
如果是这样,则需要提供完整和最少的代码才能了解您的详细信息。例如,您在NeuronGroup对象中的神经元模型是什么?更重要的是,为什么不使用SpikeMonitor类极大地简化您的计划,而不是自己查找峰值事件? Brian2中的SpikeMonitor类:https://brian2.readthedocs.io/en/stable/reference/brian2.monitors.spikemonitor.SpikeMonitor.html