« Python pour le calcul scientifique/Statistiques » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 71 :
On peut générer une matrice aléatoire avec les fonctions <code>random.rand()</code>, qui utilise une loi uniforme sur [0 ; 1], et <code>random.randn()</code> qui utilise une loi normale centrée réduite.
 
Lorsque l'on dispose d'une série de données aléatoires, qu'elles aient été mesurées ou bien générées par une fonction aléatoire, on peut ensuite les mettre dans des classes ''({{lang|en|bins}})''. Les classes sont définies par un vecteur (ou une liste, un n-uplet) <code>[c1, c2,c3, …, cn]</code>. La classe 0 désigne les valeurs inférieures à ''c''<sub>1</sub> ; la classe 1 désigne les valeurs ''c''<sub>1</sub> ≤ ''x'' &lt; ''c''<sub>2</sub> ; la classe ''n'' (<code>n == len(classes)</code>) désigne les valeurs supérieures à ''c<sub>n</sub>''.
 
La fonction <code>digitize()</code> indique dans quelle classe se trouve un nombre. Si on lui donne une matrice (ou un vecteur, une liste, un n-uplet), il renvoie une matrice de même dimension, <code>digitize(M, classes)[i, j]</code> étant la classe de l'élément <code>M[i, j]</code>. Par exemple :
Ligne 83 :
print(np.digitize(M, classes))
</source>
On peut changer la « largeur » des inégalités avec le paramètre <code>right = True</code> : ''{{lang|en|right}}'', « droite », est vrai ''({{lang|en|true}})'' lorsque l'inégalité large est à droite, la classe ''i'' désigne les valeurs ''c<sub>i</sub>''> &lt; ''x'' ≤ ''c''<sub>''i'' + 1</sub>. La syntaxe est alors <code>np.digitize(M, classes, True)</code> ou bien <code>np.digitize(M, classes, right = True)</code>. Le sens de l'inégalité ne dépend pas du sens du vecteur de classes ; ainsi, ''{{lang|en|right}}'' disignedésigne la valeur supérieure de l'intervalle même si le vecteur de classes est classé par ordre décroissant.
 
[[Fichier:Histogramme loi normale 50 ech numpy pyplot.png|vignette|Histogramme de la loi centrée réduite tracé avec Python/Numpy/Matplotlib.]]
La fonction <code>bincount()</code> travaille sur les listes de nombre entiers. Elle renvoie un n-uplet, <code>np.bincount(M)[i]</code> est le nombre de fois que le nombre ''i'' revient dans la matrice M — rappel, le premier élément du n-uplet <code>np.bincount(M)</code> a l'indice 0 donc correspond au nombre de fois que le nombre 0 apparaît dans la matrice M.
 
La fonction <code>histogram()</code> renvoie un n-uplet d'entiers, chaque élément correspondant à une classe. Le n-uplet <code>np.histogram(M, n)</code> divise les valeurs de M en ''n'' classes de même taille et indique le nombre d'éléments.
 
Pour tracer l'histogramme, nous disposons de la fonction <code>matplotlib.pyplot.hist()</code> :
[[Fichier:Histogramme loi normale 50 ech numpy pyplot.png|vignette|Histogramme de la loi centrée réduite tracé avec Python/Numpy/Matplotlib.]]
 
<source lang="python">
AM = np.random.randrandn((2, 3)100)
plt.plot(BM, np.ones_like(BM), "|")
print(A)
plt.hist(BM, bins=10, density=1)
</source>
 
La fonction <code>bincount()</code> travaille sur les listes de nombre entiers. Elle renvoie un n-uplet, <code>np.bincount(M)[i]</code> est le nombre de fois que le nombre ''i'' revient dans la matrice M — rappel, le premier élément du n-uplet <code>np.bincount(M)</code> a l'indice 0 donc correspond au nombre de fois que le nombre 0 apparaît dans la matrice M.
B = np.random.randn(100)
plt.plot(B, np.ones_like(B), "|")
plt.hist(B, bins=10, density=1)
</source>
 
== Notes et références ==