2010-08-03 7 views

Répondre

5

Peut-être que vous cherchez np.linspace(0,6,num=61) ou 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)) 
2
  1. Si vous êtes ok avec des nombres à virgule flottante, vous pouvez le faire: [x/10.0 for x in range(61)] vous donne (éléments intermédiaires omis) [0.0, 0.10000000000000001, 0.20000000000000001, ... 5.7000000000000002, 5.7999999999999998, 5.9000000000000004, 6.0]

    Sinon, consultez le module decimal.

  2. range(7)

Voici un exemple: pop contient 1000 nombres aléatoires de la séquence 0, 0,01, 0,02, ..., 5.99, 6. Bins sont tels que spécifiés. Vous pouvez ajouter une plage, ou pas - dans tous les cas, les points de terminaison sont faciles dans ce cas.

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

Merci, pouvez-vous s'il vous plaît me montrer ce que cela ressemblerait avec tous les paramètres numpy.histogram (a, bacs = [0.1,0.2 , 0,3,0,4 ... 6], intervalle = [0: 6]) –

+0

Exemple ajouté. Affiche ~ ubuntu a un bon moyen de créer la séquence aléatoire - je suis plus habitué à utiliser le module aléatoire. – chryss