如何按第 n 列对 NumPy 数组进行排序?
例如,给定:
a = array([[9, 2, 3],
[4, 5, 6],
[7, 0, 5]])
我想按第二列对 a
的行进行排序以获得:
array([[7, 0, 5],
[9, 2, 3],
[4, 5, 6]])
原文由 user248237 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何按第 n 列对 NumPy 数组进行排序?
例如,给定:
a = array([[9, 2, 3],
[4, 5, 6],
[7, 0, 5]])
我想按第二列对 a
的行进行排序以获得:
array([[7, 0, 5],
[9, 2, 3],
[4, 5, 6]])
原文由 user248237 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
@steve 的 回答 实际上是最优雅的方式。
对于“正确”的方式,请参见 numpy.ndarray.sort 的 order 关键字参数
但是,您需要将数组视为具有字段的数组(结构化数组)。
如果您最初没有使用字段定义数组,那么“正确”的方式会非常难看……
举个简单的例子,对它进行排序并返回一个副本:
就地排序:
据我所知,@Steve 确实是最优雅的方式……
此方法的唯一优点是“order”参数是用于排序搜索的字段列表。例如,您可以通过提供 order=[‘f1’,‘f2’,‘f0’] 按第二列、第三列、第一列排序。