以相同的方式在python中随机拆分两个列表



我有两个列表,其中包含大小相同的numpy数组。列表CCD_ 1具有1000个项目,其中每个numpy数组具有大小20x20x3和大小20x8list_Bnumpy数组。我想以相同的方式将两个列表随机拆分为100个子列表(最后,list_A的每个子列表都包含100 numpy数组,list_B也是如此(。我只为一个列表写了如何做到这一点的代码:

def partition (list_in, n):
random.shuffle(list_in)
return [list_in[i::n] for i in range(n)]
total_lists_A = partition (list_A, 10)

但是,我希望以相同的方式对list_Alist_B执行相同的操作,并返回total_lists_Alist_A0

您可以在函数中封装一个numpy.random.seed,以便使其可复制。类似(基于您的方法(:

# note: will not work properly if your two lists are different shapes:
def my_partition(list_in, n):
np.random.seed(1)
idx = np.random.shuffle(list_in)
return [list_in[i::n] for i in range(n)]

或者(稍微不同的方法,应该有效(

def my_partition(list_in, n):
np.random.seed(1)
idx = np.random.choice(range(len(list_in)), len(list_in))
split = np.split(idx, n)
return [list_in[i] for i in split]

我假设您这样做是为了机器学习。查看train_testrongplit

如果你想从头开始做这件事,你可以首先生成一个长度数据向量(np.arange(,然后对其进行排列,并将其用作索引(将排列后的索引拆分为一个训练集和测试集(

最新更新