numpy.digitize返回超出范围的值?

san*_*247 4 python statistics numpy binning

我使用以下代码将数组数字化为16个bin:

numpy.digitize(array, bins=numpy.histogram(array, bins=16)[1])
Run Code Online (Sandbox Code Playgroud)

我希望输出在[1,16]范围内,因为有16个分档.但是,返回数组中的一个值是17.如何解释?

Sve*_*ach 6

这实际上记录了以下行为numpy.digitize():

每个索引i返回是这样的,bins[i-1] <= x < bins[i]如果 bins是单调递增,或者bins[i-1] > x >= bins[i]如果 bins是单调递减.如果值x超出范围bins,0或者len(bins)适当返回.

所以你的情况,0并且17也有效的返回值(请注意,返回的箱阵列numpy.histogram()具有的长度17).通过返回的箱numpy.histogram()覆盖范围array.min()array.max().文档中给出的条件显示array.min()属于第一个bin,而array.max()位于最后一个bin之外 - 这就是为什么0不在输出中,而17是.