创建随机数矩阵的简单方法

我试图创建一个随机数矩阵,但我的解决方案太长,看起来难看

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

这是非常不可读的,不适合在一行。

299210 次浏览

看看 Numpy Random Rand:

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

你可以放弃 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]])

使用 map-reduce 的答案:-

map(lambda x: map(lambda y: ran(),range(len(inputs[0]))),range(hiden_neurons))
random_matrix = [[random.random for j in range(collumns)] for i in range(rows)
for i in range(rows):
print random_matrix[i]

看起来您正在做 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
x = np.int_(np.random.rand(10) * 10)

对于10个随机数,我们必须乘以20。

使用 np.random.randint()作为不推荐使用 np.random.random_integers()

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

当你说“一个随机数矩阵”时,你可以像上面提到的 Pavel https://stackoverflow.com/a/15451997/6169225那样使用 numpy,在这种情况下,我假设对你来说,这些(伪)随机数所遵循的分布是不相关的。

但是,如果您需要特定的发行版(我想您对统一发行版感兴趣) ,numpy.random提供了非常有用的方法。例如,假设您想要一个3x2矩阵,其伪随机均匀分布以[ low,high ]为界。你可以这样做:

numpy.random.uniform(low,high,(3,2))

注意,您可以用此库支持的任意数量的发行版来替换 uniform

延伸阅读: https://docs.scipy.org/doc/numpy/reference/routines.random.html

首先,创建 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)

创建随机整数数组的一个简单方法是:

matrix = np.random.randint(maxVal, size=(rows, columns))

下面输出一个从0到10的2乘3随机整数矩阵:

a = np.random.randint(10, size=(2,3))
#this is a function for a square matrix so on the while loop rows does not have to be less than cols.
#you can make your own condition. But if you want your a square matrix, use this code.


import random


import numpy as np


def random_matrix(R, cols):


matrix = []


rows =  0


while  rows < cols:


N = random.sample(R, cols)


matrix.append(N)


rows = rows + 1


return np.array(matrix)


print(random_matrix(range(10), 5))
#make sure you understand the function random.sample

Rand (row,column)根据给定的指定(m,n)参数生成0到1之间的随机数。因此,使用它来创建一个(m,n)矩阵,并乘以矩阵的范围极限和它的高限。

分析: 如果生成零,只保留下限,但如果生成一个,只保留高限。换句话说,使用 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  ]])

为了创建一个随机数字的数组,NumPy 提供了使用以下方法创建数组:

  1. 真正的数字

  2. 整数

使用随机 < strong > 实数创建数组: 有两个选择

  1. Rand (用于生成的随机数的均匀分布)
  2. Randn (用于生成的随机数的正态分布)

Random Rand

import numpy as np
arr = np.random.rand(row_size, column_size)

随机 Randn

import numpy as np
arr = np.random.randn(row_size, column_size)

用于使用随机 整数:创建数组

import numpy as np
numpy.random.randint(low, high=None, size=None, dtype='l')

哪里

  • Low = 从分布中绘制的最低(有符号)整数
  • High (可选) = 如果提供,则在从分布中绘制的最大(有符号)整数之上
  • Size (可选) = 输出形状,例如,如果给定的形状是(m,n,k) ,则绘制 m * n * k 样本
  • Dtype (可选) = 结果的期望 dtype。

例如:

给定的例子将生成一个0到4之间的随机整数数组,它的大小为5 * 5,有25个整数

arr2 = np.random.randint(0,5,size = (5,5))

为了创建5乘5矩阵,它应该被修改为

Rr2 = np.Random. randint (0,5,size = (5,5)) ,将 × * 改为逗号,#

[[21101][32143][23033][13100][41201]

例子二:

给定的例子将生成一个0到1之间的随机整数数组,它的大小为1 * 10,将有10个整数

arr3= np.random.randint(2, size = 10)

[0000110011]