繁体   English   中英

用numpy将数字放入垃圾箱

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM