基于Python中random.sample()的替代方案
python中random.sample()方法可以随机地从指定列表中提取出N个不同的元素,但在实践中发现,当N的值比较大的时候,该方法执行速度很慢,如:
numpy random模块中的choice方法可以有效提升随机提取的效率:
需要注意的是,需要置replace为False,即抽取的元素不能重复,默认为True。
补充知识:Python: random模块的随即取样函数:choice(),choices(),sample()
choice(seq): 从seq序列中(可以是列表,元组,字符串)随机取一个元素返回
choices(population, weights=None, *, cum_weights=None, k=1):
从population中进行K次随机选取,每次选取一个元素(注意会出现同一个元素多次被选中的情况),weights是相对权重值,population中有几个元素就要有相对应的weights值,cum_weights是累加权重值,例如,相对权重〔10, 5, 30,5〕相当于累积权重〔10, 15, 45,50〕。
在内部,在进行选择之前,相对权重被转换为累积权重,因此提供累积权重节省了工作。返回一个列表。
sample(population, k)从population中取样,一次取k个,返回一个k长的列表。
可以像这样使用sample(range(10000000), k=60)
以上这篇基于Python中random.sample()的替代方案就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Cry
Crypto不是自带的模块,需要下载。下面这篇文章主要给大家介绍了关于下载python中Crypto库报错:ModuleNotFoundError: No module named 'Crypto'的解决方法,文中通过图文介绍的非常详细,需要的朋友可以参考下。2018-04-04Python OpenCV中cv2.minAreaRect实例解析
minAreaRect的主要作用是获取一个多边形(就是有很多个点组成的一个图形)的最小旋转矩形(旋转矩形就是我们平常见到的水平框带了角度),这篇文章主要给大家介绍了关于Python OpenCV中cv2.minAreaRect的相关资料,需要的朋友可以参考下2022-11-11
最新评论