我有一个清单
a=[1,3,6,4,9]
我还有一系列的箱子bins=np.linspace(0,9,10)
和一个bincount变量bincount=np.zeros(9)
我想循环遍历list a
的值,并根据值所在的区间,我想将该bin的bincount
递增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.])