主要涉及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])
内容持续更新,喜欢就帮忙给个收藏和关注呗!谢谢。