我有一个N(正)点的数组。我想找到直方图的M bin边,使得所有条都具有相同的高度。换句话说,我想找到M + 1个点,使得两个连续的bin边缘之间的数组点的计数是相同的。
示例
>>> array = [0.3 0.3 0.3 0.7 0.8 0.9]
>>> M = 2
>>> binPartition(array, M)
[0, 0.5, 1]
我很感激python和numpy中的答案,但是已知算法的链接就足够了!谢谢! :)
答案 0 :(得分:1)
可以使用percentile
完成:
import numpy as np
def binPartition(array, M):
return np.percentile(array, np.linspace(0, 100, M + 1))
binPartition([0.3, 0.3, 0.3, 0.7, 0.8, 0.9], 2)
>>> array([ 0.3, 0.5, 0.9])