python 多元正态分布随机数 python产生正态分布随机数_浮点型


主要涉及python的random()内置模块和numpy的np.random()函数,在平时学习过程中很容易弄混淆,为了便于记忆,我便将常用创建随机数组的方法进行归纳,分享的内容主要是我自己在学习python过程中的一些笔记,供大家参考。

导入模块


import numpy as np
import random


第一:random() 创建随机数


random.random()              #随机生成一个[0,1)之间的浮点数

output:
0.8796515137689584


random.uniform(a=1,b=10)     #随机生成一个[1,10)之间的浮点数;a,b的值可以自定义。

output:
9.466997936629005


random.randint(a=2,b=20)      #随机生成一个[2,20]之间的整数

output:
8


random.randrange(2,20,step=2)  #随机生成一个以a为起始,b为终止,步长为2的一个整数序列中随机选择一个数

output:
10


a = [2,3,52,3,5,6,7,9]
random.choice(a)               #从一段指定序列中随机选择一个元素

output:
52


random.sample(a,k=2)           #从一段序列中随机获取指定长度(k)的一个片段,也就是在一段序列中,随机选择一定长度的片段。

output:
[3,7]


random.shuffle(a)              #将一段序列重新随机打乱,也就是重新洗牌,作用与对象本身。

output:
[52,3,1,3,5,9,7,6]


第二:numpy中random() 创建均匀分布和正态分布数


#创建均匀分布数
np.random.rand(2,6)            #生成2*6维的随机均匀分布的浮点型的数组,浮点型。

output:
array([[0.94029271, 0.20548985, 0.97117843, 0.67192293, 0.19122344,
        0.23440226],
       [0.85908951, 0.40018435, 0.97355899, 0.89867726, 0.21629239,
        0.0683459 ]])


np.random.uniform(low=2,high=8,size=(3,6))    
#从以low为下限,high为上限的随机均匀分布数中随机取样,生成size维度的均匀分布数组,浮点型。
#包括下限,不包括上限,不指定low和high时,默认值为low =0,high =1;如果high = None,则取[0,low)区间。

output:
array([[3.64223489, 3.42632238, 4.73676882, 4.67073355, 3.73765554,
        5.12705181],
       [3.11553913, 4.55005578, 7.41691337, 6.12574835, 4.0700791 ,
        2.8302397 ],
       [7.29265615, 3.30656602, 3.60942736, 6.31170398, 5.70847326,
        2.86159162]])

np.random.randint(low=2,high=8,size=(3,6))  
#从以low为下限,high为上限的随机均匀分布数中随机取样,生成size维度的均匀分布数组,整型。
#包括下限,不包括上限,不指定low和high时,如果high = None,则取[0,low)区间。

output:
array([[4, 2, 4, 3, 5, 6],
       [5, 3, 4, 6, 7, 6],
       [7, 7, 3, 6, 6, 6]])

print("*"*50)
*******************************************************************************************

#创建正态分布数:
np.random.randn(2,6)    #随机生成一个a*b维的标准正态分布数组,浮点型。

output:
array([[-0.4959866 ,  1.08237116,  0.52670026, -1.69232156,  0.00403935,
        -0.32546638],
       [ 0.35287957,  0.76335025, -0.13932746, -1.53654883, -0.38248883,
        -0.35163811]])

np.random.normal(loc =0.0 , scale= 1.0,size = (5,4))    #生成随机正态分布数。
# loc:float类型,表示此正态分布的均值(对应整个分布中心)
# scale:float类型,表示此正态分布的标准差(对应于分布的密度,scale越大越矮胖,数据越分散;scale越小越瘦高,数据越集中)
# size:输出的shape,size=(k,m,n) 表示输出k维,m行,n列的数,默认为None,只输出一个值,size=100,表示输出100个值

output:
array([[-0.2299858 ,  2.38889343, -1.01535668,  0.30636556],
       [-0.12356073, -1.15882741, -2.3020169 ,  1.14696109],
       [ 2.78000626,  2.30578599, -0.20354327,  0.35173562],
       [ 0.24328894,  0.05669307,  0.74640343,  0.38820975],
       [-1.38249917,  1.35298311,  0.31128245,  0.05224185]])


np.random.standard_normal(size = (5,6))   #返回指定形状的标准正态分布数组

output:
array([[-1.40083025, -0.97611084,  0.98945864,  0.0376667 , -0.01613342,
         0.68298786],
       [-0.8987326 ,  0.91901295, -1.25115132,  1.22083966, -1.30825891,
         2.2794486 ],
       [ 1.3310628 ,  1.18260918, -0.01140547,  0.58069417, -0.69131227,
        -0.25729141],
       [-0.04220021,  0.95954556, -2.07073858,  1.3124707 ,  0.06471694,
         1.49311661],
       [ 1.1192971 ,  0.46825176,  0.28649991,  0.41513604,  0.3947307 ,
         0.92077591]])


第三:创建指定序列列表


#Python中range()函数:

range(start,stop,step)
#start: 默认值为0,包括start,可省略
#stop:  终止值,不包括stop,不可省略
#step:   步长,默认值为1,不能是浮点型,可省略
range(10)   #等价于range(0,10,1)   可以省略起始值和步长。

output: 
range(0, 10)

range(2,10,2)   #以2为起始,10为终止,步长为2的序列,[2,10)
#在python3中返回的是一个可迭代对象,通过list(range(2,10,2)) 可以列表形式输出,而在python2中则之间以列表形式输出

output:
range(2, 10, 2)

list(range(2,10,2))   #python3中如果需要返回一段序列,通过list()函数输出

output:
[2, 4, 6, 8]

print("^"*50)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

numpy中np.arange()函数
np.arange(start,stop,step)函数:创建一个数组ndarray
#start: 默认值为0,包括start,可省略
#stop:  终止值,不包括stop,不可省略
#step:   步长,默认值为1,可以是浮点型,可省略


np.arange(10,20,2)  #以10为起始,20为终止,步长为2的numpy数组[10,20)

output:
array([10, 12, 14, 16, 18])

np.arange(1,5,0.5)  #可以指定步长为浮点型,生成浮点型数组。

output:
array([1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])



内容持续更新,喜欢就帮忙给个收藏和关注呗!谢谢。