我有一个阵列A,我想把它放进10个箱子里。这就是我所做的。
A = range(1,94)
hist = np.histogram(A, bins=10)
np.digitize(A, hist[1])但是输出有11个桶,而不是10个,它的最后一个值(93)放在bin 11中,而它应该放在bin 10中。我可以用一个黑客来修复它,但是最优雅的方法是什么呢?我如何告诉数字化,在hist1中的最后一个垃圾箱是包含在右边的-而不是[?)?
发布于 2016-11-30 19:43:27
np.histogram的输出实际上有10个回收箱;最后一个(最右边的) bin包含最大的元素,因为它的右边沿是包容性的(与其他回收箱不同)。
np.digitize方法不会产生这样的异常(因为它的用途不同),因此列表中最大的元素被放置到额外的bin中。要获得与histogram一致的bin赋值,只需使用fmin将digitize的输出按回收箱的数量夹紧即可。
A = range(1,94)
bin_count = 10
hist = np.histogram(A, bins=bin_count)
np.fmin(np.digitize(A, hist[1]), bin_count)输出:
array([ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2,
2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4,
4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8,
8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10])https://stackoverflow.com/questions/40880624
复制相似问题