这是我的数据样本。如你所见,有3个尖峰,尖峰后的数据持续高于正常水平的不同时期和水平。我试着用一个基本的for循环来解决这个问题,但是无法处理它。我不需要找到图中的每一个尖峰,我只需要计算出例如尖峰何时从点100开始,何时在点120之前自动下降。
46qrfjad1#
您的问题涉及到整个数据分析分支。一个很好的起点可能是scipy.signal系列。它提供了find_peaks [ 1 ]和peak_widths [ 2 ]来帮助实现这一点。这些函数的起点可能如下所示:
scipy.signal
find_peaks
peak_widths
from scipy import signal ts = np.array([...]) # Your data threshold = (np.max(ts) - np.min(ts))/2 + np.min(ts) peaks = signal.find_peaks(ts, threshold=threshold)[0] width = signal.peak_widths(ts, peaks)[0]
由于在3个大峰值上和旁边有这些较小的峰值,因此需要设置一个阈值。另外,我假设您需要调整peak_widths函数的参数,因为它可能会检测到较小峰值的宽度。
1条答案
按热度按时间46qrfjad1#
您的问题涉及到整个数据分析分支。一个很好的起点可能是
scipy.signal
系列。它提供了find_peaks
[ 1 ]和peak_widths
[ 2 ]来帮助实现这一点。这些函数的起点可能如下所示:由于在3个大峰值上和旁边有这些较小的峰值,因此需要设置一个阈值。另外,我假设您需要调整
peak_widths
函数的参数,因为它可能会检测到较小峰值的宽度。