Python 中带替换的采样

Manav Narula 2023年1月30日
  1. 在 Python 中使用 random.choices() 函数进行替换采样
  2. 在 Python 中使用 random.choice() 函数进行替换采样
  3. 在 Python 中使用 numpy.random.choice() 函数进行替换采样
Python 中带替换的采样

抽样是指从给定序列中选择数据样本的过程。random 模块中有几个功能可用于从给定序列中选择样本。

numpy 包中还有一个 random 子模块,用于处理数组中的随机数。

我们可以使用 random.choice() 函数来选择单个随机元素。random.sample() 函数无需替换即可采样。

random.choices() 函数用于在 Python 中进行带替换采样。

本教程演示了如何在 Python 中获取带替换的示例。我们将从整数列表中选择样本。

在 Python 中使用 random.choices() 函数进行替换采样

Python 3.6 引入了 random.choices() 函数。此函数用于在 Python 中生成带替换的样本。

我们可以传递列表和获得最终样本所需的元素总数。结果以列表形式返回。

例如:

import random

lst = [5, 8, 9, 6, 2, 3, 1, 0, 11, 12, 10]
print(random.choices(lst, k=5))

输出:

[1, 11, 10, 5, 10]

在上面的示例中,我们从 Python 中的列表创建了一个长度为 5 的带替换的采样。

我们还可以使用 weights 参数指定一些权重来进行选择。cum_weights 还可以根据累积权重进行选择。

权重在内部转换为累积权重。

在 Python 中使用 random.choice() 函数进行替换采样

如前几节所述,random.choice() 从提供的序列中选择一个随机元素。

我们可以运行 for 循环来生成一个包含随机选择元素的列表。由于该函数将在每个循环中运行,因此将在不知道先前选择的元素的情况下选择元素。

例如:

import random

lst = [5, 8, 9, 6, 2, 3, 1, 0, 11, 12, 10]
result = [random.choice(lst) for _ in range(5)]
print(result)

输出:

[2, 0, 0, 12, 6]

我们使用列表推导来创建一个列表并将随机选择的元素(由 random.choice() 函数生成)存储在该列表中。

在 Python 中使用 numpy.random.choice() 函数进行替换采样

numpy 包中有一个 random 子模块。我们可以使用 numpy.random.choice() 函数在 Python 中进行替换采样。

numpy.random.choice() 函数从一维 numpy 数组中选择给定数量的元素。最终结果在 numpy 数组中返回。

此函数接受一个名为 replace 的参数(默认情况下为 True)。如果此参数更改为 False,则返回样本而不进行替换。

我们将在下面的示例中使用此函数生成一个替换样本。

import numpy

lst = [5, 8, 9, 6, 2, 3, 1, 0, 11, 12, 10]
arr = numpy.array(lst)
print(numpy.random.choice(arr, 5))

输出:

[11 10  6  9  3]

最后,我们讨论了几种在 Python 中生成带替换样本的方法。random.choices() 函数是最直接的选项,但它仅适用于 Python 3.6 及更高版本。

对于以前的版本,我们可以使用 random.choice()numpy.random.choice() 函数。

作者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

相关文章 - Python Random