Skip to main content
 首页 » 编程设计

python之生成 n 倍的拆分索引

2025年05月04日9虾米姐

我需要为交叉验证生成拆分,假设 s 是记录的索引

s = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20] 

现在我想随机打乱数据并将其拆分为 5 折,通常我想要这样的输出

s = [[1 5 4 6], [2,3, 19,20], [... ], [... ], [.. ]]  

注意:每个数组中的编号应该是唯一的,不能重复

我知道我可以使用 chunk() 但是在 chunk 中你只能像 1-4, 5-8,.... 那样按顺序做。

谁能帮我解决这个问题?

请您参考如下方法:

使用 random.shuffle 打乱你的数组并将其分成 5 block :

对于 Python2 使用

import random 
 
s = range(1, 21) 
random.shuffle(s) 
s = [s[i::5] for i in range(5)] 

或者对于 Python3:

import random 
 
s = list(range(1, 21)) 
random.shuffle(s) 
s = [s[i::5] for i in range(5)]