我试图通过一系列索引切片Numpy数组。例如,
array = [10,15,20,25,32,66]
indices = [1,4,5]
最佳输出是
[[10][15,20,25,32][66]]
我尝试过使用
array[indices]
但这只会产生每个索引的单个值,而不是其中的所有索引。
答案 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]]