how to get density peak in python
我正在做这样的密度图,如何在Matplotlib中创建密度图?我要在图上画几条轴线,我的问题是我需要知道,最高点的X值是多少。
我可以通过一个循环找到它:
1 2 3 4 5 6 7 | density = gaussian_kde(data) aa = 0 bb = 0 for i in range(max value of data): if density(i)[0]>aa: aa = density(i)[0] bb = i |
在此之后,bb具有峰值的x值,但执行此循环的时间太长。目前大约需要25秒,将来数据的大小会更大
我希望这不是重复的,但至少我找不到这个问题的答案。
您可以使用numpy.argmax:
1 2 3 | ys = density(np.arange(9)) bb = np.argmax(ys) aa = ys[bb] |
这将计算与您发布的代码相同的
1 2 3 4 5 | xs = np.linspace(0,8,200) ys = density(xs) index = np.argmax(ys) max_y = ys[index] max_x = xs[index] |
号