任何人都可以帮助我将数字按不同类别进行排序:
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
计数行,只打印了两行3
和4
。添加一个分钟 -m 1.5
和最大限度 -x 4
,再加上配对-B
列表才能产生所需的输出。