【发布时间】:2021-12-08 13:57:22
【问题描述】:
我想在长度为 100 的 list 中采样 30 个样本。
我可以像这样使用 np.random.sample:
import numpy as np
l = list(range(100))
np.random.choice(l, 30)
# np.random.choice(l, 30) may be same with next time np.random.choice(l, 30)
这样可以得到一个样本组,但是我需要多采样几次。
例如,我需要长度为 10 的列表中的 3 个子列表(长度=3)(只是一个演示)。
重复的样本对我来说毫无意义。这意味着 [1,2,3] 和 [3,2,1] 对我来说是重复的。但np.random.choice 可能会为我生产两个。
python中有什么方法可以帮助我吗?或者有什么方法可以更快地比较采样列表?
【问题讨论】:
-
combination的内存开销怎么会太高?它是一个发电机...... -
您需要采样多少次?如果您想多次采样而不重复,那么您需要记住您采样的内容。仅采样一次是最有效的方法,因此请尝试重新考虑该要求并重新设计您的代码。
-
@Tranbi 组合是一个生成器,但我需要对其进行 random.sample,这意味着我需要将其列出,生成器不能被采样,我想?
-
如果您只有 100 个号码,并且每个样品消耗 30 个号码,如果您采样超过 3 次,您将消耗所有号码(因为顺序对您来说并不重要)。我不明白您所说的“多次采样(可能非常大,比如 10000)”是什么意思。
-
知道了。您是否已经检查了以下内容? stackoverflow.com/questions/36779729/…