Numpy 函数解释:numpy.random.normal()

背景

最近看Github源码时发现有个生成正态分布数值的用法:np.random.normal([3, 5]),这行代码会输入一个二维的array?

In [1]: import numpy as np

In [2]: np.random.normal([3,5])
Out[2]: array([1.46251563, 7.74062177])

这与我理解的不同,normal 函数的参数为何为一个list且未指定size时生成1*2 array 呢?

查看官方教程:https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.random.normal.html

np.random.normal(loc=0.0, scale=1.0, size=None) 的作用是生成高斯分布的概率密度随机数:
loc:float: 此概率分布的均值(对应着整个分布的中心centre)
scale:float:> 此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高) size:int or tuple of ints: 输出的shape,默认为None,只输出一个值

百思未得其解,random.normal()参数为list是指定什么值呢?

后来通过实验得到求解:
random.normal()可以传入一组均值和标准差来生成随机数,最后生成对应组数和size的随机数。看起来有点绕口,不bb,show my code!

In [1]: import numpy as np

In [2]: loc = [0, 10]

In [3]: scale = [1, 5]

In [4]: np.random.normal(loc, scale, size=2)
Out[4]: array([ 0.18187556, 10.73716283])

In [5]: np.random.normal(loc, scale, size=(2,2))
Out[5]:
array([[-0.14780485,  6.22388546],
       [ 0.26847313, 12.88147354]])

In [6]: np.random.normal(loc, scale)
Out[6]: array([ 1.42951507, 13.15290407])

从上面的代码可以看出,random.normal()默认生成两个随机数,如果指定大小为2,2时可以生成2x2的数组,这数组中的第一列数符合正态分布(0,1),第二组随机数符合正态分布(10,5)

这样解释就可以理解为什么 random.normal 可以传入list为参数了啊!

你可能感兴趣的:(python,python,numpy,深度学习)