Given an k-dimensional array, e.g.
A = LinearIndices((2,2,2))
2×2×2 LinearIndices{3, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}:
[:, :, 1] =
1 3
2 4
[:, :, 2] =
5 7
6 8
and a list of row-column indices, e.g. idxs=[(1,2), (1,1)]
, how do I efficiently select the corresponding rows and columns, while slicing in the remaining dimensions?
In the given example, the outcome should be
3 7
1 5
i.e. taking the elements (1,2,1)
, (1,2,2)
, (1,1,1)
, and (1,1,2)
.
We can ignore the exact shape of the output for now, as that can be fixed using reshape
.
Edit: The command reduce(hcat, (x -> @view A[x..., :]).(idxs))
solves the problem in principle, but maybe there’s a way to get one single view, instead of a copy.