python - 如何使用特定的列索引对 numpy 2D 数组行进行降序或升序排序

标签 python sorting numpy

假设我有一个像这样的 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/

相关文章:

python - 如何在Tensorflow中使用sampled_softmax_loss

python - 无需缝合图像的OpenCV曝光补偿

python - 如何编写大量嵌套的 'for' 循环(递归)

python - 你如何将星级评分作为可视化

python - 在第一个妖精之后,第二个妖精不是随机生成的

java - 按所有语言的字母升序对国家/地区进行排序

java - 在 Eclipse 中创建数组

java - 如何在单个对象中创建多个比较器

python - 我可以在没有循环的情况下清理 numpy 数组吗?

python - Numpy 下一个元素减去上一个