【发布时间】:2011-02-19 03:51:49
【问题描述】:
如何在 NumPy 中按第 n 列对数组进行排序?
例如,
a = array([[9, 2, 3],
[4, 5, 6],
[7, 0, 5]])
我想按第二列对行进行排序,以便返回:
array([[7, 0, 5],
[9, 2, 3],
[4, 5, 6]])
【问题讨论】:
-
这是一个非常糟糕的例子,因为
np.sort(a, axis=0)将是给定矩阵的令人满意的解决方案。我建议用一个更好的例子进行编辑,但被拒绝了,尽管实际上这个问题会更清楚。该示例应类似于a = numpy.array([[1, 2, 3], [6, 5, 2], [3, 1, 1]])与所需的输出array([[3, 1, 1], [1, 2, 3], [6, 5, 2]]) -
大卫,你没有明白问题的重点。他希望保持每行中的顺序相同。
-
@marcorossi 我确实明白了这一点,但这个例子的表述非常糟糕,因为正如我所说,有多个可能的答案(然而,这不会满足 OP 的要求)。后来根据我的评论进行的编辑确实已获得批准(但有趣的是,我的评论被拒绝了)。所以现在一切都很好。
-
如果答案可以按兴趣降序排列...
-
我认为使用结构化数组可以使代码更具可读性。我在这里附上了一个可能的答案:stackoverflow.com/a/67788660/13890678
标签: python arrays sorting numpy scipy