3

i am using this:

http://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html

i have an list a that i want to use like this:

numpy.histogram(a,bins=[0.1,0.2,0.3,0.4...6], range=[0:6])
  1. how do i include a set of bins 0.1 through 6 in 0.1 intervals?
  2. how do i specify a range of 0 through 6?

2 Answers 2

5

Perhaps you are looking for np.linspace(0,6,num=61) or 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))
Sign up to request clarification or add additional context in comments.

Comments

2
  1. If you're ok with floating point numbers, you can do: [x/10.0 for x in range(61)] gives you (middle elements omitted) [0.0, 0.10000000000000001, 0.20000000000000001, ... 5.7000000000000002, 5.7999999999999998, 5.9000000000000004, 6.0]

    Otherwise, see the decimal module.

  2. range(7)

Here's an example: pop contains 1000 random numbers from the sequence 0, 0.01, 0.02, ..., 5.99, 6. Bins are as you specified. You may add a range, or not -- in any event, the end points are easy in this case.

>>> 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])

2 Comments

thank you, can you please show me what this would look like with all parameters numpy.histogram(a,bins=[0.1,0.2,0.3,0.4...6], range=[0:6])
Example added. Poster ~ubuntu has a good way of creating the random sequence -- I'm more used to using the random module.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.