2013-03-16 133 views
34

我想創建隨機數的矩陣,但我的解決辦法是太長的矩陣和簡單的方式長相醜陋創建隨機數

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

這看起來不錯,但在我的實現是

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

這是非常不可讀的,不適合在一條線上。

回答

68

您可以刪除range(len())

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

不過說真的,你應該使用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

如何獲得隨機整數? – 2014-04-09 10:12:39

+19

'numpy.random.random_integers(low,high,shape)',例如'numpy.random.random_integers(0,100,(3,3))' – 2014-04-09 11:18:55

+0

隨機簽名中使用雙括號表示法的術語是什麼?我不熟悉它。 – 2017-08-12 13:53:38

14

numpy.random.rand看看:

文檔字符串:蘭特(D0,D1,...,DN)

隨機值在給定的形狀。

創建一個給定形狀的數組,並用隨機 樣本從[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

使用應答地圖減少: -

地圖(拉姆達X:地圖(拉姆達Y:RAN(),範圍(LEN(輸入[0]))),範圍(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

看起來您正在執行Coursera機器學習神經網絡練習的Python實現。下面是我做了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) 

對於隨機號碼的開出的10對20名中,我們有20點。

0

使用np.random.randint倍增() as numpy.random.random_integers()is deprecated

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