2013-03-16 17 views
34

Próbuję utworzyć macierz liczb losowych, ale moje rozwiązanie jest zbyt długa i wygląda brzydkoProsty sposób na stworzenie macierzy liczb losowych

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

to wygląda ok, ale w moim realizacji jest

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

który jest wyjątkowo nieczytelny i nie mieści się w jednej linii.

Odpowiedz

68

można upuścić range(len()):

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

Ale tak naprawdę, to prawdopodobnie powinien używać 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]]) 
+0

jak uzyskać losowych ints? –

+19

'numpy.random.random_integers (low, high, shape)', np. 'numpy.random.random_integers (0, 100, (3, 3))' –

+0

Jaki jest termin oznaczania podwójnego nawiasu używanego w sygnaturze losowej? Nie znam tego. –

14

Spójrz na numpy.random.rand:

Docstring: rand (D0, D1, ..., dn)

Losowe wartości w danym kształcie.

Utwórz tablicę o danym kształcie i rozprowadź ją losowymi próbkami z jednolitego rozkładu na [0, 1).


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

odpowiedź przy użyciu mapy, zmniejszają: -

mapy (lambda x: mapy (N r: RAN(), zakres (len (wejścia [0]))), skala (hiden_neurons))

-1
random_matrix = [[random.random for j in range(collumns)] for i in range(rows) 
for i in range(rows): 
    print random_matrix[i] 
1

Wygląda na to, że wykonywana jest implementacja Pythona w ćwiczeniu sieci neuronowej Coursera Machine Learning. Oto co zrobiłem dla 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 * .12 

#shift so that mean is at zero 
W = W - .12 
0
x = np.int_(np.random.rand(10) * 10) 

losowych liczb z 10. albowiem z 20 musimy pomnożyć przez 20.

0

użytku np.random.randint() jak numpy.random.random_integers() jest przestarzała

random_matrix = numpy.random.randint(min_val,max_val,(<num_rows>,<num_cols>)) 
Powiązane problemy