我正在尝试用指数数组切片Numpy数组。例如,用指数数组切片Numpy数组
array = [10,15,20,25,32,66]
indices = [1,4,5]
最佳输出将是
[[10][15,20,25,32][66]]
我已经使用
array[indices]
尝试,但这只是产生每个单独的索引的单个值,而不是所有的那些之间。
我正在尝试用指数数组切片Numpy数组。例如,用指数数组切片Numpy数组
array = [10,15,20,25,32,66]
indices = [1,4,5]
最佳输出将是
[[10][15,20,25,32][66]]
我已经使用
array[indices]
尝试,但这只是产生每个单独的索引的单个值,而不是所有的那些之间。
考虑使用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
隐式定义的。
这个'np.split'多么有用的小功能!如果只有它可以做多个轴。 –
这就是我想要的。谢谢。 –
根据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]]
究竟怎么做你的三个指数在阵列中表示。我真的不明白你如何从给定的输入获得你想要的输出。 – jotasi
这些索引是通过np.where()获得的。所以基本上1,4,5这样的指数就会像这样对数组进行切片:0:1,1:4,4:5 –
你称之为“最佳输出”不能是切片操作的产物,因为它有一个未定义的形状。 – ImportanceOfBeingErnest