Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按行降序排列Nd Numpy数组_Python_Python 3.x_Numpy_Sorting - Fatal编程技术网

Python 按行降序排列Nd Numpy数组

Python 按行降序排列Nd Numpy数组,python,python-3.x,numpy,sorting,Python,Python 3.x,Numpy,Sorting,我想按行值对以下矩阵进行排序: a = array([[1, 4, 6], [5, 3, 7], [8, 4, 1]]) 作为 我可以使用np.argsort(-a)获取排序索引,它返回以下索引矩阵: >>> a_idx = np.argsort(-a) array([[2, 1, 0], [2, 0, 1], [0, 1, 2]]) 但是使用这些指数来重新排列原始矩阵对我来说是不可能的 >>

我想按行值对以下矩阵进行排序:

a = array([[1, 4, 6],
           [5, 3, 7],
           [8, 4, 1]])
作为

我可以使用
np.argsort(-a)
获取排序索引,它返回以下索引矩阵:

>>> a_idx = np.argsort(-a)
array([[2, 1, 0],
       [2, 0, 1],
       [0, 1, 2]])
但是使用这些指数来重新排列原始矩阵对我来说是不可能的

>>> a[a_idx]
array([[[8, 4, 1],
        [5, 3, 7],
        [1, 4, 6]],

       [[8, 4, 1],
        [1, 4, 6],
        [5, 3, 7]],

       [[1, 4, 6],
        [5, 3, 7],
        [8, 4, 1]]])

如何有效地完成这一任务?提前非常感谢。

试试这个,使用
。沿轴取下()

>>> a = np.array([[1, 4, 6],
           [5, 3, 7],
           [8, 4, 1]])  
>>> a_idx = np.argsort(-a)

输出:

>>> np.take_along_axis(a, a_idx, axis=1)        
array([[6, 4, 1],
       [7, 5, 3],
       [8, 4, 1]])
另一种方法

import numpy as np
a = np.array([[1, 4, 6],
           [5, 3, 7],
           [8, 4, 1]])
print(np.sort(-a,axis=1)*-1)
import numpy as np
a = np.array([[1, 4, 6],
           [5, 3, 7],
           [8, 4, 1]])
print(np.sort(-a,axis=1)*-1)