在python中将两个列表统一拆分为块



我必须有两个长度相同的列表X和Y。我想把这两个列表分成长度为2000的块。列表X和Y的长度分别为3671460。例如:

#input
X = [1,2,3,4,5]
Y = [0,1,0,1,1]
#Expected output
X = [[1,2],[3,4],[5]]
Y = [[0,1],[0,1],[1]]

当然,这个例子显示了一个小得多的列表。但我真正的名单有3671460长。如何将X和Y划分为块,每个块有2000个示例?这些块稍后将被输入到我的深度学习模型中。我们将不胜感激。

这个怎么样?

a = [1, 2, 3, 4, 5]
b = [a[x:x+2] for x in range(0, len(a), 2)]

在你的情况下,2可能是2000。

如果列表的长度不同,或者不能被整除,则可能需要使用zip_longest来"填充"空值。这里的代码将每个列表中的块配对:

from itertools import zip_longest
#input
X = [1,2,3,4,5,6,7,8]
Y = [0,1,0,1,0]
# Number of items in each 'chunk'
count = 3
print(
list(
zip_longest(
zip_longest(*[iter(X)] * count),
zip_longest(*[iter(Y)] * count)
)
)
)
# ((1, 2, 3), (0, 1, 0)), ((4, 5, 6), (1, 0, None)), ((7, 8, None), None)]

您可以通过传递参数fillvalue='x'来替换输出中的None

最新更新