我正在尝试创建一个随机数字矩阵,但我的解决方案太长并且看起来很丑陋
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)]
这是非常难以理解的,不适合一行。
答案 0 :(得分:86)
您可以放弃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]])
答案 1 :(得分:41)
Docstring: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 ]])
答案 2 :(得分:3)
看起来您正在使用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 * epsilon
#shift so that mean is at zero
W = W - epsilon
答案 3 :(得分:3)
use np.random.randint() as numpy.random.random_integers() is deprecated
random_matrix = numpy.random.randint(min_val,max_val,(<num_rows>,<num_cols>))
答案 4 :(得分:3)
首先,创建numpy
数组,然后将其转换为matrix
。请参见下面的代码:
import numpy
B = numpy.random.random((3, 4)) #its ndArray
C = numpy.matrix(B)# it is matrix
print(type(B))
print(type(C))
print(C)
答案 5 :(得分:2)
对于创建随机数数组,NumPy使用以下方法创建数组:
实数
整数
使用随机实数创建数组: 有2种选择
random.rand
import numpy as np
arr = np.random.randn(row_size, column_size)
random.randn
import numpy as np
numpy.random.randint(low, high=None, size=None, dtype='l')
使用随机整数创建数组:
arr2 = np.random.randint(0,5,size = (5,5))
其中
例如:
给定的示例将生成一个介于0和4之间的随机整数数组,其大小将为5 * 5,并具有25个整数
arr3= np.random.randint(2, size = 10)
arr2 = np.random.randint(0,5,size =(5,5)),将乘法符号*更改为逗号,#
[[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]] p
eg2:
给定的示例将生成一个介于0和1之间的随机整数数组,其大小将为1 * 10并具有10个整数
{{1}}
[0 0 0 0 1 1 0 0 1 1]
答案 6 :(得分:1)
使用map-reduce的答案: -
map(lambda x: map(lambda y: ran(),range(len(inputs[0]))),range(hiden_neurons))
答案 7 :(得分:1)
random_matrix = [[random.random for j in range(collumns)] for i in range(rows)
for i in range(rows):
print random_matrix[i]
答案 8 :(得分:1)
x = np.int_(np.random.rand(10) * 10)
对于10中的随机数。对于20个,我们必须乘以20。
答案 9 :(得分:1)
当你说“随机数矩阵”时,你可以使用numpy作为上面提到的Pavel https://stackoverflow.com/a/15451997/6169225,在这种情况下,我假设你与这些(伪)随机数遵循的分布无关
但是,如果您需要特定的分发(我想您对均匀分布感兴趣),numpy.random
有非常有用的方法。例如,假设您想要一个3x2矩阵,其伪随机均匀分布以[low,high]为界。你可以这样做:
numpy.random.uniform(low,high,(3,2))
注意,您可以使用此库支持的任意数量的发行版替换uniform
。
进一步阅读:https://docs.scipy.org/doc/numpy/reference/routines.random.html
答案 10 :(得分:1)
创建随机整数数组的简单方法是:
matrix = np.random.randint(maxVal, size=(rows, columns))
以下代码输出2到3的从0到10的随机整数矩阵:
a = np.random.randint(10, size=(2,3))
答案 11 :(得分:0)
{{1}}
答案 12 :(得分:0)
numpy.random.rand(row,column)根据给定的指定(m,n)参数生成介于0和1之间的随机数。因此,使用它创建一个(m,n)矩阵,并将该矩阵乘以范围极限,然后将其与上限相加。
分析:如果生成零,则将仅保持下限,但如果生成1,则将仅保持上限。顺便说一句,使用rand numpy生成限制可以生成所需的极端数字。
import numpy as np
high = 10
low = 5
m,n = 2,2
a = (high - low)*np.random.rand(m,n) + low
输出:
a = array([[5.91580065, 8.1117106 ],
[6.30986984, 5.720437 ]])