在 python 中统一拆分两个列表
splitting two lists in chunks in unison in 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
来 'pad' 出空值。此处的代码将每个列表中的块配对:
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
。
我需要两个相同长度的列表 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
来 'pad' 出空值。此处的代码将每个列表中的块配对:
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
。