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

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

numpy.digitize(array, bins=numpy.histogram(array, bins=16)[1])

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

解决方法:

这实际上是numpy.digitize()记录的行为:

Each index i returned is such that bins[i-1] <= x < bins[i] if
bins is monotonically increasing, or bins[i-1] > x >= bins[i] if
bins is monotonically decreasing. If values in x are beyond the
bounds of bins, 0 or len(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是.

上一篇:python – 减少大型分类变量的级别数


下一篇:如何创建一个新的数据帧来存储原始数据帧的列的平均值?