from scipy.signal import argrelextrema
import matplotlib.pyplot as plt
import numpy as np
"""
通过Scipy的argrelextrema函数获取信号序列的极值点
"""
# 构建100个随机数
data = np.random.random(100)
# 获取极大值
max_peaks = argrelextrema(data, np.greater)
print(max_peaks)
#获取极小值
min_peaks = argrelextrema(data, np.less)
print(min_peaks)

这里,max_peaks保存的是数组的下标,
array([ 1, 4, 6, 9, 15, 18, 22, 26, 28, 31, 34, 36, 38, 42, 44, 47, 51,
54, 58, 61, 63, 65, 69, 72, 74, 76, 79, 81, 83, 86, 89, 93, 96],
dtype=int64),)
而print(data[max_peaks])则是对应数组下标的值
[0.68161308 0.91949444 0.85594387 0.85309506 0.93176879 0.52598609
0.79837529 0.65186956 0.77214933 0.62420653 0.95902604 0.50410231
0.97083478 0.93332787 0.24562553 0.8003892 0.52488821 0.88988088
0.79513418 0.97581509 0.37382731 0.9291115 0.84393682 0.80352976
0.89393529 0.92746503 0.47448472 0.24859635 0.8211082 0.89274342
0.97325629 0.97059639 0.59012422]
所以所以所以
在画图的时候
plt.scatter(max_peaks,data[max_peaks])
这个plt.scatter(x,y),里的参数X,Y分别是横坐标,纵坐标