Consider the 3d numpy array arr:
[[[ 0, 9, 0, 2], [ 6, 8, 0, 2]],
[[ 0, 9, 1, 5], [ 4, 8, 1, 5]],
[[ 1, 0, 1, 2], [ 6, 6, 1, 2]],
[[ 0, 9, 1, 5], [ 5, 5, 1, 5]],
[[ 0, 9, 1, 5], [ 6, 5, 1, 5]],
[[ 1, 0, 1, 2], [ 4, 7, 1, 2]],
[[ 0, 9, 3, 4], [ 6, 4, 3, 4]]])
I want to create a new array, new_arr, of the same shape by resorting arr as follows:
Sort by arr[:, 0, 0], then arr[:, 1, 0], then arr[:, 0, 1], then arr[:, 1, 1], etc.
The 2d arrays themselves are unchanged, but they are presented in a different (lexicographic) order within the 3d array.
The desired result is:
new_arr = np.array(
[[[ 0, 9, 1, 5], [ 4, 8, 1, 5]],
[[ 0, 9, 1, 5], [ 5, 5, 1, 5]],
[[ 0, 9, 3, 4], [ 6, 4, 3, 4]],
[[ 0, 9, 1, 5], [ 6, 5, 1, 5]],
[[ 0, 9, 0, 2], [ 6, 8, 0, 2]],
[[ 1, 0, 1, 2], [ 4, 7, 1, 2]],
[[ 1, 0, 1, 2], [ 6, 6, 1, 2]]])