使用列表中的索引在python中拆分数组



我在numpy:中有一个大小为3乘7的2d数组

[[1 2 3 4 5 6 7]
[4 5 6 7 8 9 0]  
[2 3 4 5 6 7 8]]

我还有一个包含拆分点索引的列表:

[1, 3]

现在,我想使用列表中的索引来分割数组,这样我就可以得到:

[[1 2]
[4 5]
[2 3]]
[[ 2 3 4]
[5 6 7]
[3 4 5]]
[[ 4 5 6 7]
[7 8 9 0]
[5 6 7 8]]

我如何在python中做到这一点?

您可以使用带切片的列表理解,使用zip成对提取索引。

A = np.array([[1, 2, 3, 4, 5, 6, 7],
[4, 5, 6, 7, 8, 9, 0],
[2, 3, 4, 5, 6, 7, 8]])
idx = [1, 3]
idx = [0] + idx + [A.shape[1]]
res = [A[:, start: end+1] for start, end in zip(idx, idx[1:])]
print(*res, sep='n'*2)
[[1 2]
[4 5]
[2 3]]
[[2 3 4]
[5 6 7]
[3 4 5]]
[[4 5 6 7]
[7 8 9 0]
[5 6 7 8]]

最新更新