Comment générer une matrice de nombres réels aléatoires avec numpy en python ?

Published: 21 septembre 2023

Tags: Python; Numpy;

DMCA.com Protection Status

En utilisant la bibliothèque NumPy, il est possible de créer une matrice de nombres réels aléatoires :

Créez une matrice 1D avec n nombres réels aléatoires.

Cela peut être fait en utilisant le module np.random et sa fonction random_sample().

import numpy as np

n = 10

data = np.random.random_sample(n)

Ce code produira des valeurs uniformément réparties entre 0 et 1.

array([0.95511311, 0.74047589, 0.68174737, 0.7318436 , 0.70291076,
       0.17197878, 0.59607566, 0.42274757, 0.58774713, 0.29854085])

Créez une matrice de nombres décimaux aléatoires pour une forme donnée.

Pour créer une matrice de nombres décimaux aléatoires, il suffit de spécifier la forme souhaitée du tableau résultant.

Par exemple :

data = np.random.random_sample((5,3))

générera par exemple

array([[0.47, 0.17, 0.01],
       [0.59, 0.07, 0.9 ],
      [0.98, 0.63, 0.44],
       [0.59, 0.31, 0.63],
       [0.35, 0.48, 0.43]])

Fonctionnalités supplémentaires

Générer des nombres décimaux aléatoires entre [a, b]:

a = -20
b = 100

data = np.random.random_sample(20) * ( b - a ) + a

donne par exemple

array([ 72.66937232,   3.84588178, -19.33734595,  77.85537141,
        64.82288126,  67.48086016,  72.5524416 , -11.11464179,
        23.01588743,  -6.09571286,  83.57241111,  54.79577522,
        19.70776298, -12.37299797,  17.31787861,  19.02199864,
        67.5527414 ,  56.50689656,  86.46552911,  36.66579102])

Générer toujours les mêmes nombres décimaux aléatoires :

Pour cela, une solution consiste à utiliser une graine :

np.random.seed(42)

data = np.random.random_sample(10)

retournera toujours les mêmes nombres aléatoires :

 array([0.37454012, 0.95071431, 0.73199394, 0.59865848, 0.15601864,
       0.15599452, 0.05808361, 0.86617615, 0.60111501, 0.70807258])

Arrondir des nombres décimaux aléatoires

Pour cela, une solution consiste à utiliser la fonction numpy autour():

Par exemple.

data = np.random.random_sample((5,3))

donne

array([[0.47422826, 0.16659521, 0.0104256 ],
       [0.59352088, 0.07216889, 0.89524555],
       [0.98402745, 0.6329296 , 0.43614741],
       [0.59215665, 0.30657867, 0.62781343],
       [0.34791008, 0.47968316, 0.42866502]])

Ensuite

np.around(data,2)

donne

array([[0.47, 0.17, 0.01],
       [0.59, 0.07, 0.9 ],
       [0.98, 0.63, 0.44],
      [0.59, 0.31, 0.63],
       [0.35, 0.48, 0.43]])

Références