Numpy "sort like" function

numpy, python, sorting

Solution

You can get the order using `np.argsort`:

order = np.argsort(w)

And then just sort both arrays:

w = w[order]
v = v[order]

Problem

Say I have two arrays, `v` and `w`: ``` v=np.arange(10) array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) w=np.random.random(10,) array([ 0.20224634, 0.19145386, 0.44607429, 0.53601637, 0.29148741, 0.62670435, 0.95371219, 0.63634805, 0.48733178, 0.17155278]) ``` I can sort `w` like this: ``` np.sort(w) array([ 0.17155278, 0.19145386, 0.20224634, 0.29148741, 0.44607429, 0.48733178, 0.53601637, 0.62670435, 0.63634805, 0.95371219]) ``` I would like to sort `v` in the same way as `w`. E.g. so that element 9 moves to element 0 and so on until `v` becomes: ``` array([9, 1, 0, 4, 2, 8, 3, 5, 7, 6]) ``` Is there an easy way to do this that I'm missing? If not, how would you do it?

Original source