【发布时间】:2018-10-23 15:49:00
【问题描述】:
import numpy as np
mat = np.array([[1,21,3],[5,4,2],[56,12,4]])
mat_sort = mat[mat[:,2].argsort()]
print(mat_sort)
输出:
[[ 5 4 2]
[56 12 4]
[ 1 21 3]]
如果我希望根据任何列进行反向排序,比如第 3 列,我要对代码进行哪些更改?意思是,我希望得到:
[[56 12 4]
[ 1 21 3]
[ 5 4 2]]
P.s 是的,我知道这是一个简单的问题,但我找不到我理解的答案,并且是基于矩阵而不是数组或向量。 TIA :)
【问题讨论】:
-
附录:反向我的意思是降序。
-
所以在你的情况下,
mat[mat[:, 2].argsort()[::-1]可以工作。 -
或
mat[-mat[:,2].argsort()]。 -
@miradulo 好的,谢谢。他们都工作。使用 'mat[mat[:, 2].argsort()[::-1]' 时我有一个问题: [::-1] 中的 :: 表示什么?为什么我不能只写 [-1]?
-
@user10089194 不用担心。 NumPy 文档的 Indexing 部分包含有关 NumPy 中索引的所有详细信息,但它只是扩展了基本的 Python 切片符号,它具有符号
[<first to include>:<first to exclude>:<step>]。因此,使用[::-1],您将包含数组的所有元素并向后退一步。
标签: python sorting numpy matrix