我有一个索引元组列表,用于前两个数组条的所有维度。
对于每个索引元组,我想在此元组位置返回一个数组的片段。
我事先并不知道数组中的维数,或者等价于索引元组中元素的数量。
例如,如果索引元组中有两个元素(pos
),我会写一些类似的东西:
arr[:, :, pos[0], pos[1]]
返回此位置的数组切片。我希望能够在不事先知道pos的长度的情况下做到这一点。天真地,我认为arr[:, :, *pos]
会起作用,但当然它不会。
感谢您的帮助。
答案 0 :(得分:1)
您可以将Ellipsis
与您的元组p
连接起来,以获取可用于对数组进行切片的元组Ep
:
Ep = (Ellipsis,)+p
sliced_arr = arr[Ep]
编辑:赞美上一个答案(已被删除)提及Ellipsis
,这实际上是我答案的一半。