numpy 我可以使用python并行地对两个相关的数组进行排序吗?

egmofgnx  于 2022-11-10  发布在  Python
关注(0)|答案(2)|浏览(140)

我有两个NumPy数组,其形状为(74395,1),存储浮点值,其中arr1[0]与arr2[0]相关,依此类推。我想按存储在第二个数组中的值以升序对它们进行排序。
举个例子:

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

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

想要的结果:

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

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

我怎么能在Python中做到这一点呢?

lh80um4z

lh80um4z1#

zip将两者放在一起,再次排序,zip转置结果,并进行分解:

>>> arr1 = [1, 2, 3]
>>> arr2 = [6, 2, 4]
>>> arr2, arr1 = zip(*sorted(zip(arr2, arr1)))
>>> arr1
(2, 3, 1)
>>> arr2
(2, 4, 6)
abithluo

abithluo2#

numpy.argsortnumpy.take_along_axis一起使用:

ind = arr2.argsort(axis=0)

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

产出:

(array([[2],
        [3],
        [1]]),
 array([[2],
        [4],
        [6]]))

相关问题