使用循环计算垃圾箱

时间:2015-10-12 05:30:01

标签: python python-2.7 numpy

我有一个清单

a=[1,3,6,4,9]

我还有一系列的箱子bins=np.linspace(0,9,10) 和一个bincount变量bincount=np.zeros(9)

我想循环遍历list a的值,并根据值所在的区间,我想将该bin的bincount递增1。

任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:1)

一种方法是利用histogram。这意味着 代码中存在错误的地方。

>>> import numpy as np
>>> bins = np.linspace(0,9,10)
>>> bincount = np.zeros(9)
>>> import random
>>> for i in range(1000000):
...     bincount += np.histogram(random.randrange(9), bins)[0]
... 
>>> bincount
array([ 110579.,  111094.,  111231.,  111292.,  110875.,  111011.,
    111306.,  111356.,  111256.])

这需要几秒钟才能运行。您可以通过减少histogram

的来电次数来加快速度
>>> bincount = np.zeros(9)
>>> for i in range(1000):
...     a = np.random.random_integers(0 , 8, 1000)
...     bincount += np.histogram(a, bins)[0]
... 
>>> bincount
array([ 110567.,  111021.,  110886.,  110846.,  111865.,  111113.,
        111284.,  110957.,  111461.])