可能为时已晚,但为了将来参考,numpy 有一个功能可以做到这一点:
http://docs.scipy.org/doc/numpy/reference/generated/numpy.digitize.html
>>> my_list = [3,2,56,4,32,4,7,88,4,3,4]
>>> bins = [0,20,40,60,80,100]
>>> np.digitize(my_list,bins)
array([1, 1, 3, 1, 2, 1, 1, 5, 1, 1, 1])
结果是一个索引数组,对应于来自 my_list 的每个元素也属于的 bin 中的 bin。请注意,该函数还将对位于您的第一个和最后一个 bin 边缘之外的值进行 bin 处理:
>>> my_list = [-5,200]
>>> np.digitize(my_list,bins)
array([0, 6])
Pandas 也有类似的东西:
http://pandas.pydata.org/pandas-docs/dev/basics.html#discretization-and-quantiling
>>> pd.cut(my_list, bins)
Categorical:
array(['(0, 20]', '(0, 20]', '(40, 60]', '(0, 20]', '(20, 40]', '(0, 20]',
'(0, 20]', '(80, 100]', '(0, 20]', '(0, 20]', '(0, 20]'], dtype=object)
Levels (5): Index(['(0, 20]', '(20, 40]', '(40, 60]', '(60, 80]',
'(80, 100]'], dtype=object)