将 N 个点放入 M 个相等的箱子中
Put N points into M equal bins
我有一个包含 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 中得到答案,但是 link 已知算法就足够了!谢谢! :)
用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])
我有一个包含 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 中得到答案,但是 link 已知算法就足够了!谢谢! :)
用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])