2013-03-16 95 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>))