我已生成1到539的随机数,大小为269。
train=randint(1,539,269)
现在我想生成不包含列车数据的测试数据
答案 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])