提取 numpy 数组中所有 1 序列的第一个和最后一个索引并将它们附加到列表中?

Extract the first and last indices of all sequences of 1s in a numpy array and append them to a list?

我有一个包含 1 和 0 的音频文件(时间序列)的掩码向量。当有一些有利的 activity 时,掩码向量将包含音频信号间隔的长序列 1,而当存在噪声时,则包含 0。我想基本上从音频信号中提取所有 activity 部分并将它们存储为 单独的音频文件 。出于这个原因,如果我能找到最有效的方法从掩码向量中提取所有 1 序列的开始和结束索引并将它们附加到列表中,这将很有帮助。

我会这样做:

groups = df.groupby(df['your_col'].ne(df['your_col'].shift(1)).cumsum()[df['your_col'].eq(1)])
for _, group in groups:
    # At this point, 'group' is a separate dataframe containing all the rows where 'your_col' is consecutively 1
    # ...

基本上它所做的是按连续的 1 对行进行分组(每组一个或多个零结束前一组 1),然后遍历每一组(这是原始数据帧的一部分)。