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

时间:2018-11-09 11:48:20

标签: python python-3.x list numpy indexing

我在numpy中有一个大小为3 x 7的二维数组:

[[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中做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以对列表进行切片处理,使用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]]