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