我有两个列表,其中包含大小相同的numpy数组。列表CCD_ 1具有1000个项目,其中每个numpy数组具有大小20x20x3
和大小20x8
的list_B
numpy数组。我想以相同的方式将两个列表随机拆分为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_A
和list_B
执行相同的操作,并返回total_lists_A
和list_A
0
您可以在函数中封装一个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
(,然后对其进行排列,并将其用作索引(将排列后的索引拆分为一个训练集和测试集(