120 votes

Un moyen simple de créer une matrice de nombres aléatoires

J'essaie de créer une matrice de nombres aléatoires, mais ma solution est trop longue et peu esthétique.

random_matrix = [[random.random() for e in range(2)] for e in range(3)]

cela semble correct, mais dans mon implémentation, c'est

weights_h = [[random.random() for e in range(len(inputs[0]))] for e in range(hiden_neurons)]

qui est extrêmement illisible et ne tient pas sur une ligne.

108voto

Pavel Anossov Points 23610

Vous pouvez laisser tomber le range(len()) :

weights_h = [[random.random() for e in inputs[0]] for e in range(hiden_neurons)]

Mais en réalité, vous devriez probablement utiliser numpy.

In [9]: numpy.random.random((3, 3))
Out[9]:
array([[ 0.37052381,  0.03463207,  0.10669077],
       [ 0.05862909,  0.8515325 ,  0.79809676],
       [ 0.43203632,  0.54633635,  0.09076408]])

98voto

root Points 14514

Jetez un coup d'œil à numpy.random.rand :

Docstring : rand(d0, d1, ..., dn)

Valeurs aléatoires dans une forme donnée.

Créez un tableau de la forme donnée et propagez-le avec des échantillons aléatoires provenant d'une distribution uniforme. aléatoires provenant d'une distribution uniforme sur [0, 1) .


>>> import numpy as np
>>> np.random.rand(2,3)
array([[ 0.22568268,  0.0053246 ,  0.41282024],
       [ 0.68824936,  0.68086462,  0.6854153 ]])

29voto

nk911 Points 417

Utiliser np.random.randint() comme np.random.random_integers() est déprécié

random_matrix = np.random.randint(min_val,max_val,(<num_rows>,<num_cols>))

6voto

Detroitteatime Points 582

On dirait que vous faites une implémentation Python de l'exercice Machine Learning Neural Network de Coursera. Voici ce que j'ai fait pour randInitializeWeights(L_in, L_out)

#get a random array of floats between 0 and 1 as Pavel mentioned 
W = numpy.random.random((L_out, L_in +1))

#normalize so that it spans a range of twice epsilon
W = W * 2 * epsilon

#shift so that mean is at zero
W = W - epsilon

5voto

SUJITKUMAR SINGH Points 311

Pour créer un tableau de nombres aléatoires, NumPy fournit la création de tableaux en utilisant :

  1. Nombres réels

  2. Entiers

Pour créer un tableau en utilisant le hasard Des chiffres réels : il y a 2 options

  1. random.rand (pour une distribution uniforme des nombres aléatoires générés)
  2. random.randn (pour une distribution normale des nombres aléatoires générés)

random.rand

import numpy as np 
arr = np.random.rand(row_size, column_size) 

random.randn

import numpy as np 
arr = np.random.randn(row_size, column_size) 

Pour créer un tableau en utilisant le hasard Les nombres entiers :

import numpy as np
numpy.random.randint(low, high=None, size=None, dtype='l')

donde

  • low = Plus petit nombre entier (signé) à tirer de la distribution
  • high(optionnel)= Si fourni, un au-dessus du plus grand entier (signé) à tirer de la distribution
  • size(optional) = Forme de sortie, c'est-à-dire que si la forme donnée est, par exemple, (m, n, k), alors m * n * k échantillons sont tirés.
  • dtype(facultatif) = Type de résultat souhaité.

eg :

L'exemple donné produira un tableau d'entiers aléatoires entre 0 et 4, sa taille sera de 5*5 et contiendra 25 entiers.

arr2 = np.random.randint(0,5,size = (5,5))

pour créer une matrice 5 par 5, il faut la modifier en

arr2 = np.random.randint(0,5,size = (5,5)), remplacez le symbole de multiplication* par une virgule ,#.

[[2 1 1 0 1][3 2 1 4 3][2 3 0 3 3][1 3 1 0 0][4 1 2 0 1]]

eg2 :

L'exemple donné produira un tableau d'entiers aléatoires entre 0 et 1, sa taille sera 1*10 et il aura 10 entiers.

arr3= np.random.randint(2, size = 10)

[0 0 0 0 1 1 0 0 1 1]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X