I\'m working with an n-dimensional array, and I\'d like a way to reverse a numbered dimension. So rather than
rev = a[:,:,::-1]
I\'d like to be
If you browse the numpy (python) source code you'll find a trick they use to write functions that operate on a particular axis is to use np.swapaxes
to put the target axis in the axis = 0
position. Then they write code that operates on the 0-axis
, and then they use np.swapaxes
again to put the 0-axis
back in its original position.
You can do that here like so:
import numpy as np
def rev(a, axis = -1):
a = np.asarray(a).swapaxes(axis, 0)
a = a[::-1,...]
a = a.swapaxes(0, axis)
return a
a = np.arange(24).reshape(2,3,4)
print(rev(a, axis = 2))
yields
[[[ 3 2 1 0]
[ 7 6 5 4]
[11 10 9 8]]
[[15 14 13 12]
[19 18 17 16]
[23 22 21 20]]]