从 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_base
和right_base
中,你的数据存储在data
pandasDataFrame中,您可以迭代分配每个切片:
for left,right,index in zip(left_base,right_base,range(len(left_base))):
data.loc[left:right,'Peak'] = "Peak {}".format(index+1)
我已经使用 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_base
和right_base
中,你的数据存储在data
pandasDataFrame中,您可以迭代分配每个切片:
for left,right,index in zip(left_base,right_base,range(len(left_base))):
data.loc[left:right,'Peak'] = "Peak {}".format(index+1)