假设给一个人一个列表,表示事件发生的时间.事件的开始标记为1,事件的结束标记为-1.否则,对于每个采样的时间点,它都是0.举个简单的例子:
event_list = [0,0,0,0,1,0,0,-1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,-1,0,0,0,0,0,1,0,0,0,0,0,-1,0,0]
我想找到一个简单的方法,将该列表转换为步长函数,其中事件的开始由1表示,事件的持续时间都是1,当事件结束时,它返回到0.因此,对于与上面相同的列表,它看起来像:
step_list = [0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0,0]
现在,可以通过在列表上循环并使用if语句和缓冲区来创建新列表来强制执行此操作.但必须有一种比这更优雅的方式.我想在numpy中使用diff
函数,但这仍然不太管用.谢谢你的建议!