numpy中生成数包random一直是零零散散的学习, 今天把它总结一下。
1、np.random.random
形式: np.random.random(size = None)
参数: 元组
返回: 随机的浮点数, 取值范围在[0.0, 1.0)
例子:
(1) a = np.random.random((3))
# out: array([0.0545747 , 0.50093581, 0.57498647])
(2) b = np.random.random((3,3))
# out: array([[0.16153003, 0.72163052, 0.86108999],
[0.65291863, 0.55810132, 0.01777369],
[0.3709582 , 0.22252266, 0.11397417]])
(3) c = np.random.random((3,3,3))
# out: array([[[0.13945927, 0.81501768, 0.91043514],
[0.56122187, 0.95883546, 0.065974 ],
[0.11781605, 0.55744775, 0.99117641]],
[[0.24191295, 0.0766085 , 0.5428258 ],
[0.44609998, 0.59042516, 0.31834528],
[0.27978428, 0.33327061, 0.79181811]],
[[0.97261267, 0.3494408 , 0.78271321],
[0.87467415, 0.27351203, 0.79395073],
[0.97057028, 0.89426802, 0.03617155]]])
2、np.random.rand
形式: np.random.rand(d0, d1, d2, d3)
参数: 一组数
返回: 在[0.0, 1.0)的均匀分布中产生随机数
例子:
(1) a = np.random.rand(3)
out: array([0.34925011, 0.04942493, 0.63604686])
(2) b = np.random.rand(3,3)
out: array([[0.95244384, 0.08020848, 0.77590428],
[0.17332507, 0.24254829, 0.29918879],
[0.19873337, 0.8039541 , 0.71606437]])
(3) c = np.random.rand(3,3,3)
out: array([[[0.30964171, 0.41220446, 0.77982171],
[0.17235795, 0.48818626, 0.93518602],
[0.7896179 , 0.02006544, 0.78057434]],
[[0.19839106, 0.73894392, 0.72458269],
[0.15702953, 0.32781068, 0.08189235],
[0.67494542, 0.67760166, 0.46260282]],
[[0.28721688, 0.80557224, 0.55904512],
[0.98629126, 0.80167453, 0.38668166],
[0.57019517, 0.89752537, 0.81608304]]])
3、np.random.randn
形式: np.random.randn()
参数: 一组数
例子:
(1)、a = np.random.randn()
out: -1.6422687533628717
(2)、b = np.random.randn(3)
out: array([ 0.59777123, -0.02373024, -0.05694757])
(3)、c = np.random.randn(3,3)
out: array([[ 0.62620532, 0.06260522, 0.41588502],
[-1.34978408, 0.65717225, -0.16113621],
[-0.93103595, 0.52501683, 1.02981087]])
(4)、d = np.random.randn(3,3,3)
out: array([[[-0.07859158, -0.64991183, -2.10707191],
[-1.03914743, 0.03100739, -1.18547585],
[ 0.76256781, -1.1521187 , -0.43370326]],
[[ 0.47123448, 1.59163619, 0.73155932],
[ 0.83834011, 1.05639766, 1.02991932],
[-0.30924295, 1.03110817, -0.33469471]],
[[-0.13857728, 0.74235556, 1.23569233],
[-0.83600565, 1.65780235, 1.21393524],
[ 0.53494231, 0.96468393, -1.6654567 ]]])
特例: np.radnom.randn 默认生成的是以均值为0、方差为1的标准正态分布, 如果想生成分布均值为2.0, 方差为6.25的数据, 则可以写成:
(5)、 e = 2.0 * np.random.randn(3,3) + 2.5
out: array([[-0.01351022, 3.00332147, 2.78806616],
[ 4.59592595, 0.27546523, 6.99324307],
[ 2.05290953, 3.13602207, 1.16469024]])
4、np.random.randint
形式: np.random.randint()
参数: 取值范围为[m, n), 如果取值处只有一个参数g, 则取值范围为[0,g) .另外一个参数为数组大小
例子:
(1)、a = np.random.randint(3, 5)
out: 4
(2)、b = np.random.randint(0,5,size = (2,3))
out: array([[0, 4, 2],
[0, 3, 0]]) # 数值取值范围为[0,5)
5、np.random.seed
形式: np.random.seed()
参数: 包含参数相同时, 其生成的值是一样的
例子:
(1)、for i in range(3):
np.random.seed(4)
per = np.random.rand(2,3)
print(per)
out: [[-0.31178367 0.72900392 0.21782079]
[-0.8990918 -2.48678065 0.91325152]]
[[-0.31178367 0.72900392 0.21782079]
[-0.8990918 -2.48678065 0.91325152]]
以上是我认为numpy中几个比较常用的生成随机数的方法,如有不对, 还望指教。