按一列和另一列(作为子集)排序numpy,同时保留行ord

2024-10-01 07:25:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个numpy阵列-

 a = np.array([[1,23],[5,4],[56,12], [7,29], [3,4], [2,15],[2,8], [4,8]])

并希望按列1和列0排序,同时保留行顺序。我已经设法按轴1订购了-

 a = a[a[:,1].argsort()]

 array([[ 5,  4],
   [ 3,  4],
   [ 4,  8],
   [ 2,  8],
   [56, 12],
   [ 2, 15],
   [ 1, 23],
   [ 7, 29]])

但是列0也需要在列1的升序中按升序排列,例如:

array([[ 3,  4],
   [ 5,  4],
   [ 2,  8],
   [ 4,  8],
   [56, 12],
   [ 2, 15],
   [ 1, 23],
   [ 7, 29]])

如何做到这一点


Tags: numpy排序顺序nparray升序设法argsort
1条回答
网友
1楼 · 发布于 2024-10-01 07:25:43

尝试对多个键使用sorted

a = np.array([[1,23],[5,4],[56,12], [7,29], [3,4], [2,15],[2,8], [4,8]])

>>> np.array(sorted(a, key=lambda x: (x[1], x[0]))) # sort col 1 then col 0.
array([[ 3,  4],
       [ 5,  4],
       [ 2,  8],
       [ 4,  8],
       [56, 12],
       [ 2, 15],
       [ 1, 23],
       [ 7, 29]])

相关问题 更多 >