我有一个有多个数据通道和一个触发通道的数据帧。触发通道为0或1。事件发生时为1。在
我想检测事件(trigger == 1
)的开始和数据帧中的示例数据通道,以便只在事件触发器之后获得指定的时间量。在
举一个具体的例子,考虑一下:
import numpy as np
import pandas as pd
np.random.seed(0)
# time in seconds
t = np.arange(10)*0.1
# data channels and trigger
d = dict(y=np.random.randn(10),
z=np.random.randn(10),
trigger=[0, 1, 0, 0, 0, 1, 0, 0, 0, 0])
df = pd.DataFrame(d, index=t)
所以df
是:
假设我有0.2秒的时间窗口。然后,当触发器在时间0.1秒和时间0.5秒时为1,我想提取该触发器后0.2时间窗口的y和z,并将它们放入一个具有维度的numpy
3D数组中(事件的,时间窗口中的样本,通道的)。在
在本例中,两个触发事件的维度为(2,3,2),0.2秒时间窗口内的3个样本,2个通道(y,z)。在
在pandas
中有没有一种有效的方法来做到这一点?我现在唯一能想到的方法是循环处理trigger == 1
事件。在
提取设置触发器的行索引:
将该1D数组扩展为2D数组,其中显示要采样的所有索引(这里,每个触发器使用3个采样):
^{pr2}$这是一个2x3阵列:
我们用它来得到最终结果:
这是一个2x3x2数组,每个触发器的y和z值乘以每个触发器的采样数。在
相关问题 更多 >
编程相关推荐