按指数数组切割Numpy数组

时间:2017-02-02 15:20:30

标签: python arrays numpy

我试图通过一系列索引切片Numpy数组。例如,

 array = [10,15,20,25,32,66]
 indices = [1,4,5]

最佳输出是

[[10][15,20,25,32][66]]

我尝试过使用

 array[indices]

但这只会产生每个索引的单个值,而不是其中的所有索引。

2 个答案:

答案 0 :(得分:4)

考虑使用np.split,如此

array = np.asarray([10, 15, 20, 25, 32, 66])
indices = [1, 5]

print(np.split(array, indices))

可生产

[array([10]), array([15, 20, 25, 32]), array([66])]

由于split仅使用断点,其中索引指示要断开块的点。因此,无需指出1:4,这是由断点1, 5隐式定义的。

答案 1 :(得分:0)

根据your comment,这个生成器会产生所需的结果:

def slice_multi(array, indices):
    current = 0
    for index in indices:
        yield array[current:index]
        current = index

array = [10,15,20,25,32,66]
indices = [1,4,5]
list(slice(array, indices)) # [[10], [15, 20, 25], [32]]