c=np.random.rand(10,2)
从[0,1)
中生成随机数数组。我可以生成相同的数组(在大小方面),但与负数和正数?另外,我可以选择这个数组的极限和维度吗?例如,如果我想从-2到2。
使用np.random.randint
,传递size
参数。对于[-2, 2)
和大小(10, 2)
的值,您有:
In [32]: np.random.randint(-2, 2, (10, 2))
Out[32]:
array([[-1, 1],
[-2, 0],
[-1, 0],
[-2, -2],
[ 0, -2],
[-2, -2],
[ 0, 0],
[ 1, -1],
[ 0, 1],
[-2, -1]])
或者使用np.random.uniform
for float:
In [33]: size = (10, 2)
In [39]: np.random.uniform(-2, 2, size)
Out[39]:
array([[-1.1129566 , -1.94562947],
[ 0.21356557, -1.96769933],
[ 1.1481992 , -0.08494563],
[ 0.12561175, 0.95580417],
[-1.79335536, -1.01276994],
[ 1.56808971, 0.15911181],
[ 0.50987451, -1.39039728],
[-1.57962641, 1.59555514],
[-1.8318709 , -1.57055885],
[ 0.682527 , -1.89022731]])
如果你不想从正态分布中生成统一的数字,你可以得到0到1之间的随机数,然后使用它来构建最小和最大之间的随机数。
(np.random.rand(30) * 10) - 5
上面将给出[-5,+5)之间的30个数字
虽然已经回答了,但我想再添加一个方法。您可以使用np.linspace
在指定范围内生成等间距的浮点数,例如:
>>> nums = np.linspace(-2, 2, 10)
>>> nums
array([-2. , -1.55555556, -1.11111111, -0.66666667, -0.22222222,
0.22222222, 0.66666667, 1.11111111, 1.55555556, 2. ])
如果需要,您可以将数组重塑为任何兼容的所需形状。
>>> nums.reshape(5, 2)
array([[-2. , -1.55555556],
[-1.11111111, -0.66666667],
[-0.22222222, 0.22222222],
[ 0.66666667, 1.11111111],
[ 1.55555556, 2. ]])