我正在生成一系列的值,并希望将它们放入bin。我不想用numpy之类的。有没有比这更像蟒蛇的东西:
bins = [20,30,40]
results = [0,0,0,0]
for _ in range(iterations):
x = somefunction()
for n, bin in enumerate(bins):
if x < bin:
results[n] += 1
break
else:
results[-1] += 1
final = [100 * r / float(iterations) for r in results]
print(final)发布于 2015-04-04 02:40:03
你可以使用类似这样的东西:
r = [0] * (len(bins) + 1)
for _ in xrange(iterations):
r[next((i for i, bin in enumerate(bins) if somefunction() < bin), -1)] += 1或者可选的是计数器:
n = len(bins)
from collections import Counter
c = Counter()
c.update(
next((i for i, bin in enumerate(bins) if somefunction() < bin), n)
for _ in xrange(iterations)
)发布于 2015-04-04 02:47:57
使用二进制搜索算法而不是线性搜索算法会更好/更快(对于更大的数组)。
那是,
def binm(rr,ra):
ih=len(ra)-1
il=0
if rr<ra[il]: return il
while (ih-il>1):
ie=(ih+il)/2
if rr<ra[ie]:
ih=ie
else:
il=ie
return ih
bins = [20,30,40]
results = [0,0,0,0]
for _ in range(iterations):
x = somefunction()
ib=binm(x,bins)
results[ib]+=1https://stackoverflow.com/questions/29437675
复制相似问题