在Python中,如何计算直方图的峰值?
我尝试了以下代码:
我尝试了以下代码:
import numpy as np
from scipy.signal import argrelextrema
data = [0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 1, 2, 3, 4,
5, 6, 7, 8, 9, 5, 6, 7, 8, 9, 5, 6, 7, 8, 9,
12,
15, 16, 17, 18, 19, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24,]
h = np.histogram(data, bins=[0, 5, 10, 15, 20, 25])
hData = h[0]
peaks = argrelextrema(hData, np.greater)
但结果是:
(array([3]),)
我希望它能够找到第0列和第3列的峰值。
请注意,这些峰值跨越了超过1个列。我不希望它将跨越多个列的峰值视为额外的峰值。
我也可以接受其他获取峰值的方法。
注意:
>>> h[0]
array([19, 15, 1, 10, 5])
>>>
argrelextrema
返回局部最大值和最小值 - 数组中只有索引三是局部最大值。你如何定义峰值?一旦定义了要求并找出逻辑,您可以编写自己的解决方案。 - wwii