从 numpy 的
random.Generator.choice
函数的文档中,参数之一是 shuffle
,默认为 True
。
文档指出:
随机播放布尔值,可选
不放回取样时样品是否被打乱。默认值为 True,False 提供加速。
没有足够的信息让我弄清楚这意味着什么。我不明白为什么我们会在已经适当随机的情况下进行洗牌,并且我不明白为什么如果产生有偏差的样本,我会选择不洗牌。
如果我将
shuffle
设置为 False
我仍然会得到随机(独立)样本吗?我也很想了解为什么我想要默认设置 True
。
无论您是否选择
shuffle
,您仍然会获得随机选择。但是,如果您选择 shuffle=False
,则可能的排序分布并不均匀。当选择的项目数等于项目数时,最容易看到这一点:
import numpy as np
rng = np.random.default_rng()
x = np.arange(10)
rng.choice(x, 10, replace=False, shuffle=False)
# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
rng.choice(x, 10, replace=False, shuffle=True)
# array([8, 1, 3, 9, 6, 5, 0, 7, 4, 2])
如果减少使用
shuffle=False
选择的项目数量,您会发现在 x
中较早出现的项目往往会在输出中较早出现。