我使用以下代码将数组数字化为16个bin:
numpy.digitize(array, bins=numpy.histogram(array, bins=16)[1])
我希望输出在[1,16]范围内,因为有16个分档.但是,返回数组中的一个值是17.如何解释这个?
解决方法:
这实际上是numpy.digitize()记录的行为:
Each index
i
returned is such thatbins[i-1] <= x < bins[i]
ifbins
is monotonically increasing, orbins[i-1] > x >= bins[i]
ifbins
is monotonically decreasing. If values inx
are beyond the
bounds ofbins
,0
orlen(bins)
is returned as appropriate.
所以在你的情况下,0和17也是有效的返回值(注意numpy.histogram()返回的bin数组的长度为17). numpy.histogram()返回的bin将array.min()的范围覆盖到array.max().文档中给出的条件显示array.min()属于第一个bin,而array.max()位于最后一个bin之外 – 这就是为什么0不在输出中,而17是.