3.np.random

1. np.random.seed

np.random.seed()函数用于生成指定随机数。
seed()被设置了之后,np.random.random()可以按顺序产生一组固定的数组,如果使用相同的seed()值,则每次生成的随机数都相同。
如果不设置这个值,那么每次生成的随机数不同。只在调用的时候seed()一次,不能使生成的随机数相同,需要每次调用都seed()一下,表示种子相同,从而生成的随机数相同。

#只在调用的时候seed()一次,生成不同的随机数
np.random.seed(1)
List1 = np.random.randn(4,4)
List2 = np.random.randn(4,4)
# List1 != List2

#每次调用都seed()同一个值
np.random.seed(1)
List3 = np.random.randn(4,4)
np.random.seed(1)
List4 = np.random.randn(4,4)
# List1 == List2

print("List1:",List1)
print("List2:",List2)
print("List3:",List3)
print("List4:",List4)

# 输出:
List1: [[ 1.62434536 -0.61175641 -0.52817175 -1.07296862]
 [ 0.86540763 -2.3015387   1.74481176 -0.7612069 ]
 [ 0.3190391  -0.24937038  1.46210794 -2.06014071]
 [-0.3224172  -0.38405435  1.13376944 -1.09989127]]
List2: [[-0.17242821 -0.87785842  0.04221375  0.58281521]
 [-1.10061918  1.14472371  0.90159072  0.50249434]
 [ 0.90085595 -0.68372786 -0.12289023 -0.93576943]
 [-0.26788808  0.53035547 -0.69166075 -0.39675353]]
List3: [[ 1.62434536 -0.61175641 -0.52817175 -1.07296862]
 [ 0.86540763 -2.3015387   1.74481176 -0.7612069 ]
 [ 0.3190391  -0.24937038  1.46210794 -2.06014071]
 [-0.3224172  -0.38405435  1.13376944 -1.09989127]]
List4: [[ 1.62434536 -0.61175641 -0.52817175 -1.07296862]
 [ 0.86540763 -2.3015387   1.74481176 -0.7612069 ]
 [ 0.3190391  -0.24937038  1.46210794 -2.06014071]
 [-0.3224172  -0.38405435  1.13376944 -1.09989127]]

2. np.random.choice

2.1 产生随机数

#numpy.random.choice(a, size=None, replace=True, p=None)

#从a(只要是ndarray都可以,但必须是一维的)中随机抽取数字,并组成指定大小(size)的数组
# a为一维数组或int,如果是int,则生成随机样本,就好像a是np.arange(N)一样。

#replace:True表示可以取相同数字,False表示不可以取相同数字。代表的意思是抽样之后还放不放回去

#数组p:与数组a相对应,表示取数组a中每个元素的概率,默认为选取每个元素的概率相同。

除了numpy中的数组,python内建的list(列表)、tuple(元组)也可以使用。

print(np.random.choice(5)) #从[0, 5)中随机输出一个随机数
#相当于np.random.randint(0, 5)
	

print(np.random.choice(5, 3))#在[0, 5)内输出五个数字并组成一维数组(ndarray)
#相当于np.random.randint(0, 5, 3)

#输出
1
[0 4 1]

2.2 从数组、列表或元组中随机抽取

注意:不管是什么,它必须是一维的!

L = [1, 2, 3, 4, 5]#list列表
T = (2, 4, 6, 2)#tuple元组
A = np.array([4, 2, 1])#numpy,array数组,必须是一维的
A0 = np.arange(10).reshape(2, 5)#二维数组会报错

array = np.random.choice(L, 5)
print(array)
	
array = np.random.choice(T, 5)
print(array)
 
array = np.random.choice(A, 5)
print(array)
array = np.random.choice(A0, 5)#如果是二维数组,会报错

#输出
[1 1 4 3 2]
[2 6 2 2 6]
[2 2 2 4 4]

np.random.choice参数的 a 必须是一维的
在这里插入图片描述

  • 参数replace
    用来设置是否可以取相同元素:
    True表示可以取相同数字;
    False表示不可以取相同数字。
    默认是True
print(np.random.choice(5, 6, replace=True))#可以看到有相同元素

print(np.random.choice(5, 6, replace=False))#会报错,因为五个数字中取六个,不可能不取到重复的数#输出
[1 3 4 2 4 0]

在这里插入图片描述

  • 参数p
    p实际是个数组,大小(size)应该与指定的a相同,用来规定选取a中每个元素的概率,默认为概率相同。p数组的 概率和 = 1
aa_milne_arr = ['pooh', 'rabbit', 'piglet', 'Christopher']
print(np.random.choice(aa_milne_arr, 10, p=[0.6, 0.1, 0.1, 0.2]))
#可以看到,‘pooh’被选取的概率明显比其他几个高很多
['pooh' 'piglet' 'Christopher' 'piglet' 'pooh' 'piglet' 'pooh' 'pooh' 'Christopher' 'pooh']
  • 参数 size
    size = 一个整数。一维数组
    size = 2个整数。二维数组
split_traces_indexes = np.random.choice(np.arange(20),size=(4, 5),replace=False)
print(split_traces_indexes)

#输出
[[13 17  1 16 18]
 [15 14 19  3 11]
 [ 9 12  7 10  2]
 [ 0  8  6  5  4]]

3.综合例子

trace_files = [1,2,3,4,5,6,7,8,9,10,11,12]
split_traces_indexes = np.random.choice(np.arange(len(trace_files)),size=(3, 4),replace=False)
trace_file_change = np.array(trace_files)[split_traces_indexes]

print(split_traces_indexes)
print(trace_file_change)

#输出
[[10  9  1 11]
 [ 7  2  5  4]
 [ 6  8  0  3]]
 
[[11 10  2 12]
 [ 8  3  6  5]
 [ 7  9  1  4]]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值