Python 将浮点范围放入存储箱
给定5个范围Python 将浮点范围放入存储箱,python,range,floating,binning,Python,Range,Floating,Binning,给定5个范围 [(0., 0.), (0., 0.3), (0.3, 0.5), (0.5, 0.8), (0.8, 1.0)] 这相当于: [0.0,0.0] (0.0,0.3] (0.3,0.5) (0.5,0.8] (0.8,1.0) 和输入浮动列表: [0.5293113408538, 0.3105914215541, 0.7748290363338001, 0.7745464933980998, 0.17276995816109997, 0.83335888200110
[(0., 0.), (0., 0.3), (0.3, 0.5), (0.5, 0.8), (0.8, 1.0)]
这相当于:
- [0.0,0.0]
- (0.0,0.3]
- (0.3,0.5)
- (0.5,0.8]
- (0.8,1.0)
[0.5293113408538,
0.3105914215541,
0.7748290363338001,
0.7745464933980998,
0.17276995816109997,
0.83335888200110002,
0.0]
目标是将浮动存储到上述范围并输出:
[3, 2, 3, 3, 1, 4, 0]
我试过这个:
score_ranges = [(0., 0.), (0., 0.3), (0.3, 0.5), (0.5, 0.8), (0.8, 1.0)]
x = [0.5293113408538,
0.3105914215541,
0.7748290363338001,
0.7745464933980998,
0.17276995816109997,
0.83335888200110002,
0.0]
binning = []
for i in x:
for j, (start, end) in enumerate(score_ranges):
if i == 0:
binning.append(0)
break
elif start < i <= end:
binning.append(j)
break
得分范围=[(0,0.),(0,0.3),(0.3,0.5),(0.5,0.8),(0.8,1.0)]
x=[0.5293113408538,
0.3105914215541,
0.7748290363338001,
0.7745464933980998,
0.17276995816109997,
0.83335888200110002,
0.0]
binning=[]
对于x中的i:
对于枚举(分数范围)中的j(开始、结束):
如果i==0:
binning.append(0)
打破
elif start
import bisect
score_ranges = [0., 0.3, 0.5, 0.8, 1.0]
binning = []
x = [
0.5293113408538,
0.3105914215541,
0.7748290363338001,
0.7745464933980998,
0.17276995816109997,
0.83335888200110002,
0.0]
for a in x:
binning.append(bisect.bisect_left(score_ranges, a))