lambda匿名函数
lambda x: 2*x
等价于
def func(x):
return 2 * x
lambda : 1
等价于
def func():
return 1
defaultdict()类的使用参考这篇博客:
Q = defaultdict(lambda: np.zeros(env.action_space.n))语句解析_hehedadaq的博客-CSDN博客
numpy.random.choice( )用法:
numpy.random.choice(a, size=None, replace=True, p=None)
从a中,按照size的shape提取样本。
其中a若是array,则抽样元素,若是整数,则从np.arange(a)中抽样(即[0,a))
replace参数的作用,是决定重复抽样还是不重复抽样。
当replace=True(默认模式)时,则为可重复抽样
当replace=False)时,则为不重复抽样
另外注意,想要不重复抽样,需要配合size参数使用,并在1次抽样中完成,而不能是多次(如使用for循环)见下面代码
p实际是个数组,大小(size)应该与指定的a相同,用来规定选取a中每个元素的概率,默认为概率相同
import numpy as np
a = np.arange(10)
print('a=', a)
print('可重复抽样:', np.random.choice(a, size=10))
print('不可重复抽样:', np.random.choice(a, size=10, replace=False)) # size>10时会报错
# 注意,下面的方式,产生的样本还可以是重复的,因为replace=False只能配合size参数在一次抽样中发挥作用,下面这种属于多次抽样
for i in range(10):
print(np.random.choice(a, replace=False), end=',')
a= [0 1 2 3 4 5 6 7 8 9]
可重复抽样: [3 8 3 1 4 0 1 9 8 2]
不可重复抽样: [4 1 7 3 8 0 9 2 6 5]
1,8,7,6,4,9,7,0,8,3,
>>> a = ['pooh', 'rabbit', 'piglet', 'Christopher']
>>> np.random.choice(a, 5, p=[0.5, 0.1, 0.1, 0.3])
array(['pooh', 'pooh', 'pooh', 'Christopher', 'piglet'], dtype='|S11')
#可以看到,‘pooh’被选取的概率明显比其他几个高很多