我有这个数组:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
我一直在尝试制作这样的东西:
将此数组拆分为3(不等(,然后我想让它返回这样的东西:
- 第一个元素->第一阵列
- 第二元素->第二阵列
- 第三元素->第三阵列
- 第四元素->第一阵列
- 等等
[1, 4, 7, 10], [2, 5, 8], [3, 6, 9]
我试过这种
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
new_arrays = np.array_split(arr, 3)
print(new_arrays)
但它是这样分裂的:
[1 ,2, 3, 4], [5, 6, 7], [8, 9, 10]
我尝试了hsplit,它有点管用,但需要等分,这对我的数据集来说是不可能的。
我希望我能正确理解你的问题。您可以创建n
新列表,然后使用itertools.cycle
将值附加到每个子列表:
from itertools import cycle
def my_split(arr, n):
out = [[] for _ in range(n)]
for v, l in zip(arr, cycle(out)):
l.append(v)
return out
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
new_arrays = my_split(lst, 3)
print(new_arrays)
打印:
[[1, 4, 7, 10], [2, 5, 8], [3, 6, 9]]