在python中提取两个随机样本集

时间:2014-01-15 08:03:36

标签: python random-sample

我已生成1到539的随机数,大小为269。

train=randint(1,539,269)

现在我想生成不包含列车数据的测试数据

2 个答案:

答案 0 :(得分:1)

我认为您要求该范围内的一半数字位于train,另一半位于test

all = range(1, 539) # numbers from 1 to 538
random.shuffle(all) # shuffle them randomly
test = all[:239] # first half in test 
train = all[239:] # second half in train

答案 1 :(得分:1)

我猜你真的想要1-538的数字(因为它可以被2整除),并且你的数据集在选择后不会替换数字。获取它们的一种简单方法是只生成它们,随机播放并拆分结果:

n = range(1, 539)
random.shuffle(n)
n1 = n[:len(n)//2]
n2 = n[len(n)//2:]

每个元素长269个元素,每个数字在它们两个之间只出现一次

>>> len(n1)
269
>>> n1[:10]
[188, 295, 213, 372, 150, 535, 16, 363, 137, 285]
>>> n2[:10]
[276, 307, 314, 404, 409, 205, 523, 119, 224, 487]

如果您正在使用NumPy,可能:

>>> n1, n2 = np.random.permutation(538).reshape((2, -1)) + 1
>>> n1[:10]
array([ 43, 195, 280, 241, 135, 277, 304, 320,  93,  13])
>>> n2[:10]
array([ 81, 179, 102, 520, 244, 288, 111, 524, 507, 356])