Numpy 基于直方图数据的概率密度函数

Numpy 基于直方图数据的概率密度函数,numpy,matplotlib,curve-fitting,Numpy,Matplotlib,Curve Fitting,我使用Matplotlib绘制numpy.ndarray(长度1400)。我想检测“峰值”,并创建一个函数,使其在“非峰值”时为0.1,在“峰值”时为峰值的y值 示例图表: 应用于您的数据。计算二阶导数并确定mpd和mph设置 first_derivative = np.gradient(data) second_derivative = np.gradient(first_derivative) ind = detect_peaks(second_derivative, mpd=20,mph=

我使用Matplotlib绘制
numpy.ndarray
(长度1400)。我想检测“峰值”,并创建一个函数,使其在“非峰值”时为0.1,在“峰值”时为峰值的y值

示例图表:

应用于您的数据。计算二阶导数并确定mpd和mph设置

first_derivative = np.gradient(data)
second_derivative = np.gradient(first_derivative)
ind = detect_peaks(second_derivative, mpd=20,mph=0, show=True)
print(ind)
然后用0或最大值填充数组--


最后,查看其他峰值检测选项--

定义“峰值”。如果
y[i]>max(y[i-1],y[i+1])
,那么
y[i]
是一个峰值吗?@Eric不是所有的问题,而是一个较短的范围,只是较大的问题。我同意Eric的观点:首先明确定义你的问题。例如,如果peak的值都大于15,则可以用Python将解决方案编写为一行程序。如果你需要一些新奇的峰值检测算法,事情可能会变得复杂得多。@Bart没什么新奇的。但如果你认为埃里克提到的定义——它将捕捉太多的“峰值”。我想我的意思很直观。
arr = []

for i in range(0,len(n_test)):
    for j in ind:
        if i == j:
            arr.append(n_test[i])
    arr.append(0)


plt.plot(arr)