我有两个列表,其中包含大小相同的numpy数组。列表list_A
有1000个项目,其中每个numpy数组的大小为20x20x3
,而list_B
个numpy数组的大小为20x8
。我想将两个列表以相同的方式随机分为100个子列表(最后,list_A
的每个sub_list都包含100个numpy数组,而list_B
的每个sub_list都相同)。我只针对一个列表编写了如何执行此操作的代码:
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
和total_lists_B
答案 0 :(得分:1)
我假设您正在为此进行机器学习。调查train_test_split
如果您希望从头开始执行此操作,则可以首先生成一个长度数据向量(np.arange
),然后对其进行置换并将其用作索引(将置换后的索引分为序列并进行测试)设置)
答案 1 :(得分:1)
您可以在函数中包装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]