假设我有一个像这样的 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]])
在 Matlab 中使用 sortrows(my_matrix,[-1 2]) 执行此操作很简单,其中 -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/