将数字放入带有numpy的箱子中

时间:2013-10-20 20:12:29

标签: python arrays numpy scipy

我正在使用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,所有其他值都适合。有没有这样做的功能?在这种情况下,它将是:“x <= 5,5 50”。在numpy中这样做的简洁方法是什么?

1 个答案:

答案 0 :(得分:4)

当你为最后一个垃圾箱说20 < x <= 50 including x > 50时,你真的在​​说x>20。您可以通过删除x>20的最后一个bin来获取50np.digitize使用参数right,当True允许您拥有10 < x <= 20之类的bin行为而非默认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个值不存在,因此您的错误。

相关问题