随机数random()生成数组
随机数
#size=5指定生成5个随机数,并组成一个ndarray数组
a=np.random.random(size=5)
print(a)
print(type(a))
结果:
[0.32841335 0.08853397 0.7719518 0.11669795 0.59754706]
<class 'numpy.ndarray'>
#如果不加参数size,生成的是一个返回[0.0, 1.0)范围的随机数
a=np.random.random()
print(a)
print(type(a))
结果:
0.6408131344970486
<class 'float'>
#size=(2,3)创建二维数组
a=np.random.random(size=(2,3))
print(a)
print(type(a))
结果:{size=(2,3)指创建2行3列的二维数组}
[[0.91208731 0.96776949 0.51610337]
[0.26176896 0.31994015 0.14627309]]
<class 'numpy.ndarray'>
#size=(2,3,3)创建三维数组
a=np.random.random(size=(2,3,3))
print(a)
print(type(a))
结果:{size=(2,3,3)指创建2个3行,3列的三维数组}
[[[0.72229578 0.66648356 0.40343016]
[0.0765574 0.30903895 0.19439705]
[0.39041189 0.13883567 0.05646996]]
[[0.07147462 0.15570994 0.08275303]
[0.50599719 0.05621077 0.95416318]
[0.9497459 0.06390999 0.13081354]]]
<class 'numpy.ndarray'>
x=np.random.rand(10)
print(x)
#结果:生成10个[0,1)的随机数
np.random.rand()和np.random.random()的区别:
相同点:两个函数都是在 [0, 1) 的均匀分布中产生随机数。
不同点:参数传递不同。random.random( )接收一个单独的元组,而random.rand( )接收分开的参数
例如:
要生成3行5列的数组,你可以
np.random.rand(3, 5)
或者
np.random.random((3, 5))
两个函数功能完全一样,numpy为什么这么做,这是有历史原因的。可能是为了使 Matlab 用户更容易学习 python+numpy 的组合。把其中一个函数去掉,所带来的麻烦远大于好处,因为有很多现存的代码使用了函数的不同版本。
随机整数randint()生成数组
numpy.random.randint(low、high、size)
默认high是None,
如果只有low,那范围就是[0,low),
如果有high,范围就是[low,high)。
size表示生成的维度
#生成[0,5)之间的随机整数,size=10表示一维数组,元素个数10个
a=np.random.randint(5,size=10)
print(a)
print(type(a))
结果:
[1 2 3 3 2 1 3 0 0 2]
<class 'numpy.ndarray'>
#生成[5,10)之间的随机整数,size=10表示一维数组,元素个数10个
a=np.random.randint(5,10,size=10)
print(a)
print(type(a))
结果:
[5 8 7 5 5 8 8 7 6 5]
<class 'numpy.ndarray'>
#生成[5,10)之间的随机整数,size=(2,3)表示二维数组2行3列
a=np.random.randint(5,10,size=(2,3))
print(a)
print(type(a))
结果:
[[9 8 7]
[6 6 9]]
<class 'numpy.ndarray'>
#生成[5,10)之间的随机整数,size=(2,4,3)表示三维数组2个4行3列
a=np.random.randint(5,10,size=(2,4,3))
print(a)
print(type(a))
结果:
[[[9 7 7]
[7 9 5]
[5 9 8]
[7 5 5]]
[[8 5 6]
[9 7 6]
[8 5 9]
[5 7 6]]]
<class 'numpy.ndarray'>
随机方差分布数组randn()
numpy.random.randn(d0,d1,…,dn)
randn函数返回一个或一组样本,具有标准正态分布(期望为 0,方差为 1)。
dn表格每个维度 返回值为指定维度的array
#创建一维数组(值为正太分布)
a=np.random.randn(4)
print(a)
结果:{创建一维数组值为正太分布,且4个值}
[ 0.50791716 0.20654164 0.91392296 -0.37149023]
#创建二维数组(值为正太分布),2行3列的正太分布值
a=np.random.randn(2,3)
print(a)
结果:
[[ 0.50226148 -1.04057313 -1.05297484]
[-0.6812766 1.31848462 0.41707931]]
#创建三维数组(值为正太分布),2个3行4列的正太分布值
a=np.random.randn(2,3,4)
print(a)
结果:
[[[-2.07525002 -1.32988885 -0.76469953 -0.36114198]
[-0.07949898 -1.77600837 1.14122804 -0.05158659]
[ 1.02895248 1.33876595 -0.47272402 -0.15221185]]
[[-0.23338729 0.08311554 -1.09068697 -0.7200072 ]
[ 1.39105961 0.7763497 -0.33694818 0.80777491]
[-0.7675833 0.36297381 -1.18767124 0.70628512]]]
随机方差分布数组且指定方差normal()
np.random.normal(loc=,scale=,size=)指定期望和方差的正太分布
loc: 期望
scale:方差
size: 形状
#默认的normal()函数创建的是:loc=0.0,scale=1.0的整改分布
a=np.random.normal(size=4)
print(a)
结果:
[ 0.48020042 -1.47781036 1.514757 0.02959261]
#normal()指定loc,scale创建正太分布,一维数组
a=np.random.normal(loc=2,scale=4,size=4)
print(a)
结果:
[-0.62843317 -2.46408167 0.46803852 7.15364569]
#normal()指定loc,scale创建正太分布,二维数组2行3列
a=np.random.normal(loc=2,scale=4,size=(2,3))
print(a)
结果:
[[-4.65621806 2.9411795 2.97672568]
[ 6.28013303 7.97898493 -5.14406465]]
#normal()指定loc,scale创建正太分布,三维数组2个3行4列
a=np.random.normal(loc=2,scale=4,size=(2,3,4))
print(a)
结果:
[[[ 6.0520187 7.41956974 6.49261014 -1.21725059]
[ 9.36195212 -1.74690398 1.19951566 -0.71623426]
[-1.12240751 4.61490294 1.98981814 -0.21171062]]
[[ 2.30209515 2.54750312 7.56650075 -3.49782812]
[ 0.72864675 -3.58500149 3.49167301 3.02638296]
[-1.49637658 -0.2453314 3.16000657 -0.11082087]]]