我有一些数据需要分组到 bin 中。而不是将垃圾箱表示为 0,1,2,3...等。我希望它输出每个 bin 的平均值或中位数。有没有办法做到这一点?

最佳答案

我没有无循环的解决方案(就像大多数 numpy 问题需要的那样),但假设你没有太多的垃圾箱,而且数组不是很大,这应该是相当快的:

x = np.array([0.2, 9., 6.4, 3.0, 1.6])
bins = np.array([0.0, 1.0, 2.5, 10.0])
inds = np.digitize(x, bins)
inds
=> array([1, 3, 3, 3, 2])

for bin_idx in inds:
    bin_arr = x[inds==bin_idx]
    print bin_idx, np.mean(bin_arr), np.median(bin_arr)
=>
1 0.2 0.2
3 6.13333333333 6.4
3 6.13333333333 6.4
3 6.13333333333 6.4
2 1.6 1.6

要创建数组:
bin_means = np.array([ x[inds==bin_idx].mean() for bin_idx in inds ])

关于python - numpy 的数字化函数可以输出平均值或中位数吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23070329/

10-12 18:19