我正在尝试将数字分类为“bins”,因此如果bin是0到20范围内的所有数字,则19落入该bin。
我试图在不使用if-then状态的情况下这样做:
if x < 0.5:
return "bin1"
elif x < 0.8:
return "bin2"
...
Numpy有一个numpy.linspace方法,它生成一个numpy数组,并且间隔均匀。但是,我仍然没有看到如何有效地进行这种bin分类,而没有获取数组的结果并将它们放在“if”语句中。感谢。
答案 0 :(得分:6)
import bisect
bins = range(0, 100, 15)
print bisect.bisect_left(bins, 35)
答案 1 :(得分:3)
您可以使用numpy.searchsorted
:
>>> import numpy as np
>>> bins = np.array([0, 10, 100, 1000])
>>> numbers = np.array([800, 8, 80])
>>> print bins.searchsorted(numbers)
[3, 1, 2]