从 find_peaks 中识别单个峰

Identifying individual peaks from find_peaks

我已经使用 scipy.signal.find_peaks 成功识别了 2D 时间序列信号(时间与强度)中的峰值,并将该函数生成的峰值属性放入字典中,包括每个峰值的左右基时间值高峰.

现在我想回到我的原始信号并识别各个峰值。 我觉得可能有一种简单的方法可以做到这一点,但我似乎找不到它。

数据如下:

Time (s) Intensity

0        0  
1        1        
2        3     
3        1       
4        0
5        0 
6        1 
7        5 
8        3 
9        1 
10       0

当时峰值的左右基值 (x) 轴看起来像:

left bases
1
6

right bases
3
9

结果如下:

Time (s) Intensity   Peak  

0        0           Nan       
1        1           Peak 1        
2        3           Peak 1        
3        1           Peak 1       
4        0           Nan
5        0           Nan
6        1           Peak 2
7        5           Peak 2
8        3           Peak 2
9        1           Peak 2
10       0           Nan        

感谢您的帮助!

假设你的左右碱基分别存储在等长的列表left_baseright_base中,你的数据存储在datapandasDataFrame中,您可以迭代分配每个切片:

for left,right,index in zip(left_base,right_base,range(len(left_base))):
    data.loc[left:right,'Peak'] = "Peak {}".format(index+1)