首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -入库

Python -入库
EN

Stack Overflow用户
提问于 2015-04-04 02:24:46
回答 2查看 246关注 0票数 0

我正在生成一系列的值,并希望将它们放入bin。我不想用numpy之类的。有没有比这更像蟒蛇的东西:

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

发布于 2015-04-04 02:40:03

你可以使用类似这样的东西:

代码语言:javascript
复制
r = [0] * (len(bins) + 1)
for _ in xrange(iterations):
    r[next((i for i, bin in enumerate(bins) if somefunction() < bin), -1)] += 1

或者可选的是计数器:

代码语言:javascript
复制
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)
)
票数 1
EN

Stack Overflow用户

发布于 2015-04-04 02:47:57

使用二进制搜索算法而不是线性搜索算法会更好/更快(对于更大的数组)。

那是,

代码语言:javascript
复制
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]+=1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29437675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档