阅读量:5
在Python的科学计算库中,特别是在scipy.signal
模块中,find_peaks
函数是一个非常有用的工具,用于在一维数组中查找局部峰值(即“峰”或“峰顶”)。不过,需要注意的是,由于库的更新和版本差异,find_peaks
函数的参数可能会有所不同。下面我将基于较新版本的scipy
库(如1.4.0及以上版本)来讲解find_peaks
函数的主要参数及其作用。
主要参数
height(可选,浮点数或包含两个浮点数的元组):
- 用于设置峰值的最小高度。如果是一个浮点数,则只考虑高于此高度的峰值。如果是一个元组
(min, max)
,则只考虑高度在min
和max
之间的峰值(不包括max
)。
- 用于设置峰值的最小高度。如果是一个浮点数,则只考虑高于此高度的峰值。如果是一个元组
threshold(可选,浮点数):
- 用于设置峰值与两侧相邻点之间的高度差阈值。峰值两侧的点必须低于峰值高度减去这个阈值。
distance(可选,整数):
- 设置两个相邻峰值之间的最小水平距离(即索引的差)。这有助于防止过近的峰值被同时选中。
prominence(可选,浮点数):
- 设置峰值的突出度阈值。突出度是峰值与严格较低(不包括距离小于
distance
的点)的局部最小值之间的垂直距离。
- 设置峰值的突出度阈值。突出度是峰值与严格较低(不包括距离小于
width(可选,整数或包含两个整数的元组):
- 设置峰值的宽度要求。如果是一个整数,则峰值周围至少要有这么多(不包括峰值本身)的连续点。如果是一个元组
(min, max)
,则峰值周围连续点的数量必须在这个范围内。
- 设置峰值的宽度要求。如果是一个整数,则峰值周围至少要有这么多(不包括峰值本身)的连续点。如果是一个元组
wlen(可选,整数):
- 用于计算峰值的突出度时考虑的数据点的窗口长度。这通常与突出度计算一起使用。
rel_height(可选,浮点数,范围在0到1之间):
- 设置相对高度阈值。与
height
不同,这个阈值是相对于数据中的最大值的。例如,如果rel_height
为0.5,则只会选择高度至少为数据最大值一半的峰值。
- 设置相对高度阈值。与
plateau_size(可选,整数):
- 用于标识平顶(plateau)的参数。如果一个峰值及其邻近点的高度差小于
threshold
,并且这些点的数量大于plateau_size
,则这些点被视为一个平顶,并只报告其中一个点作为峰值。
- 用于标识平顶(plateau)的参数。如果一个峰值及其邻近点的高度差小于
返回值
find_peaks
函数返回一个包含两个元素的元组:
peaks(整数数组):
- 峰值在输入数组中的索引。
properties(字典):
- 包含有关每个峰值的其他信息的字典,如“peak_heights”(峰值的高度)和“prominences”(峰值的突出度)等。
示例
from scipy.signal import find_peaks import numpy as np x = np.array([0, 1, 3, 7, 4, 2, 5, 2, 6, 1, 0, 3]) peaks, _ = find_peaks(x, height=3) print(peaks) # 输出: [2 3 7]
在这个示例中,我们查找数组x
中高度至少为3的峰值,并打印出它们的索引。