Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
How to iterate over numpy array axes in array slicing?
In short, I want to access a multidimensional array, starting with an entry, say a 4D array called "new_array".
new_array[0,1,2,3]
and getting as an output the sliced arrays
new_array[:,1,2,3],new_array[0,:,2,3],new_array[0,1,:,3],new_array[0,1,2,:]
iterating over each axis in turn
I tried starting with "[0,1,2,3]" while replacing the "i-th" array with ":", but it's not a valid entry in python arrays.
It is possible to unroll it and do everything by hand, but this does not generalize over higher dimensional arrays. Is there a pythonic way of doing this?
1 answer
slice(None)
will give you a value that's equivalent to a bare :
in slice syntax. So you can write, for example,
for i in range(4):
print(new_array[tuple(slice(None) if i == j else n for j, n in enumerate([0,1,2,3]))])
0 comment threads