Skip to content
Advertisement

Can I sort two related arrays in parallel using python?

I have two NumPy arrays with the shape (74395, 1) storing float values where arr1[0] correlates to arr2[0] and so on. I would like to sort them together in ascending order by the values stored in the second array.

As an example:

arr1: [[1]
       [2]
       [3]]

arr2: [[6]
       [2]
       [4]]

wanted result:

arr1: [[2]
       [3]
       [1]]

arr2: [[2]
       [4]
       [6]]

How could I do that in python?

Advertisement

Answer

Use numpy.argsort with numpy.take_along_axis:

ind = arr2.argsort(axis=0)

np.take_along_axis(arr1, ind, axis=0)
np.take_along_axis(arr2, ind, axis=0)

Output:

(array([[2],
        [3],
        [1]]),
 array([[2],
        [4],
        [6]]))
User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement