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)