介绍一下Python中scipy.signal.find_peaks的使用

avatar
作者
猴君
阅读量:5

在Python的科学计算库中,特别是在scipy.signal模块中,find_peaks函数是一个非常有用的工具,用于在一维数组中查找局部峰值(即“峰”或“峰顶”)。不过,需要注意的是,由于库的更新和版本差异,find_peaks函数的参数可能会有所不同。下面我将基于较新版本的scipy库(如1.4.0及以上版本)来讲解find_peaks函数的主要参数及其作用。

主要参数

  1. height(可选,浮点数或包含两个浮点数的元组):

    • 用于设置峰值的最小高度。如果是一个浮点数,则只考虑高于此高度的峰值。如果是一个元组(min, max),则只考虑高度在minmax之间的峰值(不包括max)。
  2. threshold(可选,浮点数):

    • 用于设置峰值与两侧相邻点之间的高度差阈值。峰值两侧的点必须低于峰值高度减去这个阈值。
  3. distance(可选,整数):

    • 设置两个相邻峰值之间的最小水平距离(即索引的差)。这有助于防止过近的峰值被同时选中。
  4. prominence(可选,浮点数):

    • 设置峰值的突出度阈值。突出度是峰值与严格较低(不包括距离小于distance的点)的局部最小值之间的垂直距离。
  5. width(可选,整数或包含两个整数的元组):

    • 设置峰值的宽度要求。如果是一个整数,则峰值周围至少要有这么多(不包括峰值本身)的连续点。如果是一个元组(min, max),则峰值周围连续点的数量必须在这个范围内。
  6. wlen(可选,整数):

    • 用于计算峰值的突出度时考虑的数据点的窗口长度。这通常与突出度计算一起使用。
  7. rel_height(可选,浮点数,范围在0到1之间):

    • 设置相对高度阈值。与height不同,这个阈值是相对于数据中的最大值的。例如,如果rel_height为0.5,则只会选择高度至少为数据最大值一半的峰值。
  8. plateau_size(可选,整数):

    • 用于标识平顶(plateau)的参数。如果一个峰值及其邻近点的高度差小于threshold,并且这些点的数量大于plateau_size,则这些点被视为一个平顶,并只报告其中一个点作为峰值。

返回值

find_peaks函数返回一个包含两个元素的元组:

  1. peaks(整数数组):

    • 峰值在输入数组中的索引。
  2. 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的峰值,并打印出它们的索引。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!