[英]placing numbers into bins with numpy
我正在使用np.digitize
将数组装箱到一组箱中:
data = np.array([1,5,6,15,25,60])
bins = np.array([ 5, 10, 20, 50])
result = np.digitize(data, bins)
# this fails
print bins[result]
我希望将数据放入bin中,并解释为将bin中的每个值都解释为“小于或等于”(最后一个bin除外),其他所有值都适合该bin。 是否有执行此功能的功能? 在这种情况下,应为:“ x <= 5、5 <x <= 10、10 <x <= 20和20 <x <= 50,包括x> 50”。 在numpy中执行此操作的简洁方式是什么?
当您说最后一个bin的20 < x <= 50 including x > 50
,您实际上是在说x>20
。 您可以通过删除最后一个bin 50
获得x>20
。 np.digitize right
一个参数,当True
时,它将允许您具有bin行为,例如10 < x <= 20
而不是默认的10 <= x < 20
>>> data = np.array([1,5,6,15,25,60])
>>> bins = np.array([ 5, 10, 20])
>>> np.digitize(data, bins, right=True)
array([0, 0, 1, 2, 3, 3])
>>>
您的代码bins[result]
失败,因为尽管bins
定义了3个值,但实际上有4个间隔(x<=5, 5<x<=10, 10<x<=20, 20<x)
。 因此,例如将65放置在索引为3的bin中。 第四个间隔。 bins
的第4个值不存在,因此出现错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.