python: 使用numpy.histogram
我正在使用这个:
http://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html
我有一个列表 a
,我想这样使用:
numpy.histogram(a,bins=[0.1,0.2,0.3,0.4...6], range=[0:6])
- 我怎么才能在0.1到6之间,设置0.1的间隔?
- 我怎么指定范围是从0到6?
2 个回答
2
如果你能接受小数,可以这样做:
[x/10.0 for x in range(61)]
这段代码会给你一系列数字(中间的数字省略了),结果是[0.0, 0.10000000000000001, 0.20000000000000001, ... 5.7000000000000002, 5.7999999999999998, 5.9000000000000004, 6.0]
如果不想用小数,可以看看
decimal
模块。range(7)
这个代码会生成从0到6的数字。
这里有个例子:pop
包含了1000个随机数字,这些数字来自于0, 0.01, 0.02, ..., 5.99, 6. 你可以根据需要设置区间,或者不设置 -- 不管怎样,这里的端点都很简单。
>>> import numpy
>>> import random
>>> pop = []
>>> for i in range(1000):
... pop.extend([random.choice(range(600))/100.0])
...
>>> bins = [x/10.0 for x in range(61)]
>>> hist, bin_edges = numpy.histogram(pop, bins)
>>> bin_edges
array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ,
1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2. , 2.1,
2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3. , 3.1, 3.2,
3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 4. , 4.1, 4.2, 4.3,
4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5. , 5.1, 5.2, 5.3, 5.4,
5.5, 5.6, 5.7, 5.8, 5.9, 6. ])
>>> hist
array([20, 11, 22, 17, 25, 11, 15, 15, 13, 18, 21, 21, 16, 13, 12, 18, 16,
19, 11, 14, 15, 20, 20, 9, 13, 16, 20, 19, 23, 11, 19, 12, 21, 15,
16, 24, 24, 16, 19, 18, 10, 14, 29, 11, 16, 15, 14, 19, 11, 15, 16,
12, 17, 18, 12, 14, 27, 12, 21, 19])
5
也许你在找的是 np.linspace(0,6,num=61)
或者 np.arange(0,6.1,0.1)
:
import numpy as np
a=np.random.random(100)*6
hist=np.histogram(a,bins=np.linspace(0,6,num=61))