numpy.histogram 未按预期运行 - 未使用半开间隔?

numpy.histogram not behaving as expected - not using half-open intervals?

这是一小段代码...

import numpy as np
test = [0.4, 0.5, 0.6, 0.6, 0.0, 0.3, 0.5, 0.5, 0.8, 0.4]
np.histogram(test, bins=np.arange(0, 1 + 0.1, 0.1))

...这是输出,其中第一个数组是直方图数据,第二个数组给出 bin 边缘:

(array([1, 0, 1, 0, 2, 5, 0, 0, 1, 0]),
 array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ]))

我对输出的直方图数据感到困惑。根据 documentation,除了最后一个是 [a, b] 之外,所有 bin 都是 [a, b) 形式的半区间。但是,这与直方图数据不一致。比如第5个元素是5,按理说是对应bin [0.5, 0.6),但是这个区间只有三个数!我要疯了吗?

这是一件让人措手不及的常见事情。直方图函数确实像宣传的那样工作,但数字并不像您预期​​的那样......第 5 个桶的右边缘实际上略有偏移,如下所示 returns False:

np.arange(0, 1 + 0.1, 0.1)[6] == 0.6

有关详细信息,请参阅:Is floating point math broken?