生成随机数矩阵的简单方法

140 投票
13 回答
340642 浏览
提问于 2025-04-17 19:20

我正在尝试创建一个随机数字的矩阵,但我的解决方案太长了,看起来很丑。

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)]

这段代码非常难以阅读,而且一行放不下。

13 个回答

37

使用 np.random.randint(),因为 np.random.random_integers() 已经不再推荐使用了。

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

你可以去掉 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]])
110

看看这个 numpy.random.rand:

文档说明: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 ]])

撰写回答