python - 如何使用numpy降序排序?

标签 python sorting numpy

我有一个像这样的 numpy 数组:

A = array([[1, 3, 2, 7],
           [2, 4, 1, 3],
           [6, 1, 2, 3]])

我想按降序对这个矩阵的行进行排序,并像这样获取排序矩阵的参数:

As = array([[3, 1, 2, 0],
            [1, 3, 0, 2],
            [0, 3, 2, 1]])

我做了以下事情:

import numpy
A = numpy.array([[1, 3, 2, 7], [2, 4, 1, 3], [6, 1, 2, 3]])
As = numpy.argsort(A, axis=1)

但这给了我升序排序。此外,在我花了一些时间在互联网上寻找解决方案之后,我希望 numpy 中的 argsort 函数必须有一个参数可以颠倒排序顺序。但是,显然 没有这样的论点!为什么!?

有一个名为order 的参数。我通过猜测尝试了 numpy.argsort(..., order=reverse) 但它不起作用。

我在这里寻找以前问题的解决方案,我发现我可以做到:

import numpy
A = numpy.array([[1, 3, 2, 7], [2, 4, 1, 3], [6, 1, 2, 3]])
As = numpy.argsort(A, axis=1)
As = As[::-1]

出于某种原因,As = As[::-1] 没有给我所需的输出。

嗯,我想这一定很简单,但我遗漏了一些东西。

如何按降序对 numpy 数组进行排序?

最佳答案

只需将矩阵乘以 -1 即可反转顺序:

[In]: A = np.array([[1, 3, 2, 7],
                    [2, 4, 1, 3],
                    [6, 1, 2, 3]])
[In]: print( np.argsort(-A) )
[Out]: [[3 1 2 0]
        [1 3 0 2]
        [0 3 2 1]]

关于python - 如何使用numpy降序排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36265930/

相关文章:

python - 用距点的距离填充numpy数组的最快方法

python - 将除法替换为零 numpy

python - PyGTK 主循环的阻塞行为

python - 根据当前项目和下一项的值替换列表中的值

Python - 按照第二个列表提供的顺序按对象属性对列表进行排序...这可以改进吗?

c# - 如何使 DataGridVewLinkColumn 与 DataGridView 的其余部分一起排序

Python - 将数据拆分为 csv 文件中的列

Python/Tracing - 如何从跟踪器中停止函数的执行(从中返回)

java - 修改后的快速排序可以是 O(n) 的最佳情况吗?

python - 使用 scipy.spatial 的数据类型问题