如何将数字列表按特定截止值分类?

如何将数字列表按特定截止值分类?

任何人都可以帮助我将数字按不同类别进行排序:

3.83
3.93
3.48
2.96
3.66
2.79
3.17

我想找到返回出现次数的方法,例如:

1.5-2: 0
2-2.5: 0
2.5-3.2: 3
3.2-4: 4

答案1

您描述的是直方图分箱问题。在 Python 中,您可以使用 numpyhistogram函数,例如:

>>> import numpy as np
>>> print np.histogram([3.83,3.93,3.48,2.96,3.66,2.79,3.17],[2,2.5,3.2,4])
(array([0, 3, 4]), array([ 2. ,  2.5,  3.2,  4. ]))
>>> 

文档:

答案2

使用histogram.py实用工具,其中包括在自定义存储桶列表中对数字进行分箱的选项:

histogram.py --no-mvsd -m 1.5 -x 4 -B 2,2.5,3.2,4  <  numbers.txt   

输出:

# NumSamples = 7; Min = 1.50; Max = 4.00
# each ∎ represents a count of 1
    1.5000 -     2.0000 [     0]: 
    2.0000 -     2.5000 [     0]: 
    2.5000 -     3.2000 [     3]: ∎∎∎
    3.2000 -     4.0000 [     4]: ∎∎∎∎

注意:当前版本(v0.3.1) 的上述实用程序有点不稳定。有人可能会认为histogram.py --no-mvsd -B 1.5,2,2.5,3.2,4 < numbers.txt这就足够了,但结果输出忽略了0计数行,只打印了两行34。添加一个分钟 -m 1.5最大限度 -x 4,再加上配对-B列表才能产生所需的输出。

相关内容