データは、2500の測定の時系列を含むマトリックスです。スパイクの周りに記録されたデータポイントを破棄して、各時系列を経時的に平均化する必要があります(tspike-dt * 10 ... tspike + 10 * dtの間隔で)。スパイク時間の数はニューロンごとに可変であり、2500エントリの辞書に保存されます。私の現在のコードはニューロンとスパイク時間を繰り返し、マスクされた値をNaNに設定します。次に、bottleneck.nanmean()が呼び出されます。ただし、このコードは現在のバージョンでは遅くなります。より高速な解決策があるのではないかと思います。ありがとう!
import bottleneck
import numpy as np
from numpy.random import rand, randint
t = 1
dt = 1e-4
N = 2500
dtbin = 10*dt
data = np.float32(ones((N, t/dt)))
times = np.arange(0,t,dt)
spiketimes = dict.fromkeys(np.arange(N))
for key in spiketimes:
spiketimes[key] = rand(randint(100))
means = np.empty(N)
for i in range(N):
spike_times = spiketimes[i]
datarow = data[i]
if len(spike_times) > 0:
for spike_time in spike_times:
start=max(spike_time-dtbin,0)
end=min(spike_time+dtbin,t)
idx = np.all([times>=start,times<=end],0)
datarow[idx] = np.NaN
means[i] = bottleneck.nanmean(datarow)