Если ваши данные отсортированы по времени, вам просто нужно сгруппировать электроды по 5. Тогда set
может быть быстрее, чем np.unique
:
size=10**6
window_size=5
electrodes = np.random.randint(0,64,size)
electrodes_by_5 = electrodes.reshape(-1,window_size)
nb_electrodes=np.apply_along_axis(lambda arr:len(set(arr)),1,electrodes_by_5)
Выход:
In [463]: electrodes[:10]
Out[463]: array([13, 13, 23, 20, 5, 30, 9, 6, 28, 11])
In [464]: electrodes_by_5[:2]
Out[464]:
array([[13, 13, 23, 20, 5],
[30, 9, 6, 28, 11]])
In [465]: nb_electrodes[:2]
Out[465]: array([4, 5])