在python中对x,y坐标的多维数组进行排序

在python中对x,y坐标的多维数组进行排序,python,list,sorting,numpy,multidimensional-array,Python,List,Sorting,Numpy,Multidimensional Array,因此,我尝试在python中对多维元素数组进行排序。数组是一团乱,这使它变得如此困难,但不幸的是,它是opencv函数返回的结果 这些是y,x坐标(我知道是向后的…) 现在,我需要按照每个numpy数组的第一个元素(我们称之为a)排序,然后按降序排列a的第二个元素。我需要在a的第一个元素上按升序断开所有的联系 所以这最终会是 [array([[[ 13, 178]],[[ 50, 179]],[[ 49, 258]],[[ 12, 257]]]), array([[[ 58, 178]],[[1

因此,我尝试在python中对多维元素数组进行排序。数组是一团乱,这使它变得如此困难,但不幸的是,它是opencv函数返回的结果

这些是y,x坐标(我知道是向后的…)

现在,我需要按照每个numpy数组的第一个元素(我们称之为a)排序,然后按降序排列a的第二个元素。我需要在a的第一个元素上按升序断开所有的联系

所以这最终会是

[array([[[ 13, 178]],[[ 50, 179]],[[ 49, 258]],[[ 12, 257]]]),
array([[[ 58, 178]],[[105, 179]],[[104, 257]],[[ 57, 257]]]),
array([[[ 13,  93]],[[ 50,  94]],[[ 49, 171]],[[ 12, 170]]]),
array([[[ 58,  93]],[[105,  94]],[[104, 171]],[[ 57, 170]]]),
array([[[13,  9]], [[50, 10]],[[49, 86]],[[12, 85]]]),
array([[[ 58,   9]],[[105,  10]],[[104,  86]],[[ 57,  85]]])]
现在,我已经了解了如何使用

items[each][first][0][Y_POS(or X_POS)]
其中每个都是要访问的nparray(共有6个) Y_POS表示Y位置,X_POS表示X位置

另外两个变量first和0永远不会改变

我真的不知道从哪里开始,以使其高效运行,所以任何帮助都是感激的。请记住,坐标是用Y,X表示的


提前感谢各位。

鉴于A是包含所有数据的4d阵列:

I = np.argsort(A[:, 0, 0, 0])
A = A[I[::-1]]
I = np.argsort(A[:, 0, 0, 1], kind='mergesort')
A = A[I[::-1]]

首先我们在Y上按相反的顺序排序,然后在X上也按相反的顺序排序,结果是在X上递减,但在X相等时在Y上递增。请注意,我们必须使用一个稳定的排序算法,以防止第一次排序的结果出现混乱;mergesort应该可以做到这一点。

假设A是包含所有数据的4d数组:

I = np.argsort(A[:, 0, 0, 0])
A = A[I[::-1]]
I = np.argsort(A[:, 0, 0, 1], kind='mergesort')
A = A[I[::-1]]
首先我们在Y上按相反的顺序排序,然后在X上也按相反的顺序排序,结果是在X上递减,但在X相等时在Y上递增。请注意,我们必须使用一个稳定的排序算法,以防止第一次排序的结果出现混乱;mergesort应该可以做到这一点