可以说我有一个像这样的numpy 2D数组:

a = np.array([[3,6,7],[1,9,4],[ 3,7,8],[2,5,10]])
a
# array([[ 3,  6,  7],
#       [ 1,  9,  4],
#       [ 3,  7,  8],
#       [ 2,  5, 10]])


我需要对基于第一列降序排列并在第二列升序排列的行进行排序,以获得以下结果:

array([[ 3,  6,  7],
       [ 3,  7,  8],
       [ 2,  5,  10],
       [ 1,  9, 4]])


使用sortrows(my_matrix,[-1 2])在Matlab中执行此操作非常简单,其中第一列为-1降序,第二列为2升序。

我想知道numpy中是否有类似的功能。

最佳答案

这是使用numpy_indexed软件包的方法:

import numpy_indexed as npi
print(a[npi.argsort((a[:,1], -a[:,0]))])

关于python - 如何使用特定的列索引对numpy 2D数组行进行降序或升序排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38815776/

10-12 20:25