Python中的Numpy.random中的rand vs normal
在本文中,我们将详细研究 Numpy.random.rand() 方法和 Numpy.random.normal() 方法之间的主要区别。
- 关于随机:对于随机,我们采用 .rand()
numpy.random.rand(d0, d1, ..., dn) :
创建一个指定形状的数组和
用随机值填充它。
参数 :d0, d1, ..., dn : [int, optional] Dimension of the returned array we require, If no argument is given a single Python float is returned.
返回 :
Array of defined shape, filled with random values.
- 关于正常:对于随机,我们采用 .normal()
numpy.random.normal(loc = 0.0, scale = 1.0, size = None) :创建一个指定形状的数组并用随机值填充它,这实际上是 Normal(Gaussian)Distribution 的一部分。这是分布也因其特征形状而被称为钟形曲线。
参数 :loc : [float or array_like]Mean of the distribution. scale : [float or array_like]Standard Derivation of the distribution. size : [int or int tuples]. Output shape given as (m, n, k) then m*n*k samples are drawn. If size is None(by default), then a single value is returned.
返回 :
Array of defined shape, filled with random values following normal distribution.
代码1:随机构造一维数组
# Python Program illustrating # numpy.random.rand() method import numpy as geek # 1D Array array = geek.random.rand(5) print("1D Array filled with random values : \n", array)
输出 :
1D Array filled with random values : [ 0.84503968 0.61570994 0.7619945 0.34994803 0.40113761]
代码 2:按照高斯分布随机构造一维数组
# Python Program illustrating # numpy.random.normal() method import numpy as geek # 1D Array array = geek.random.normal(0.0, 1.0, 5) print("1D Array filled with random values " "as per gaussian distribution : \n", array) # 3D array array = geek.random.normal(0.0, 1.0, (2, 1, 2)) print("\n\n3D Array filled with random values " "as per gaussian distribution : \n", array)
输出 :
1D Array filled with random values as per gaussian distribution : [-0.99013172 -1.52521808 0.37955684 0.57859283 1.34336863] 3D Array filled with random values as per gaussian distribution : [[[-0.0320374 2.14977849]] [[ 0.3789585 0.17692125]]]
Code3:说明 NumPy 中随机与正常的图形表示的Python程序# Python Program illustrating # graphical representation of # numpy.random.normal() method # numpy.random.rand() method import numpy as geek import matplotlib.pyplot as plot # 1D Array as per Gaussian Distribution mean = 0 std = 0.1 array = geek.random.normal(0, 0.1, 1000) print("1D Array filled with random values " "as per gaussian distribution : \n", array); # Source Code : # https://docs.scipy.org/doc/numpy-1.13.0/reference/ # generated/numpy-random-normal-1.py count, bins, ignored = plot.hist(array, 30, normed=True) plot.plot(bins, 1/(std * geek.sqrt(2 * geek.pi)) * geek.exp( - (bins - mean)**2 / (2 * std**2) ), linewidth=2, color='r') plot.show() # 1D Array constructed Randomly random_array = geek.random.rand(5) print("1D Array filled with random values : \n", random_array) plot.plot(random_array) plot.show()
输出 :
根据高斯分布填充随机值的一维数组:[ 0.12413355 0.01868444 0.08841698 ..., -0.01523021 -0.14621625 -0.09157214] 一维数组填充随机值:[0.72654409 0.26955422 0.19500427 0.37178803 0.10196284]
重要的 :
在代码 3 中,图 1 清楚地显示了高斯分布,因为它是根据通过 random.normal() 方法生成的值创建的,因此遵循高斯分布。
图 2 不遵循任何分布,因为它是由 random.rand() 方法生成的随机值创建的。