如何按轴对numpy数组进行排序并保留行[重复]

Posted

技术标签:

【中文标题】如何按轴对numpy数组进行排序并保留行[重复]【英文标题】:How to sort a numpy array by axis and preserve rows [duplicate] 【发布时间】:2019-03-12 06:38:23 【问题描述】:

例如,

In [11]: X  = np.array([[1,2,3,4],[1,2,6,3],[12,35,1,6]])

给了

In [12]: X
Out[12]: 
array([[ 1,  2,  3,  4],
       [ 1,  2,  6,  3],
       [12, 35,  1,  6]])

现在,如果我使用

对其进行排序
In [13]: X.sort(axis=0)

In [14]: X
Out[14]: 
array([[ 1,  2,  1,  3],
       [ 1,  2,  3,  4],
       [12, 35,  6,  6]])

我失去了行结构。我要做的就是一次排序一列并保持行结构。所以

按第三列排序

In [14]: X
Out[14]: 
array([[ 12,  35,  1,  6],
       [ 1,  2,  3,  4],
       [1, 2,  6,  3]])

第三列有序,行保持。

如何使用 numpy 实现这一点?

【问题讨论】:

【参考方案1】:

你可以使用np.argsort:

Y = X[X[:, 2].argsort()]

array([[12, 35,  1,  6],
       [ 1,  2,  3,  4],
       [ 1,  2,  6,  3]])

【讨论】:

以上是关于如何按轴对numpy数组进行排序并保留行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何对特定行上的 numpy 数组进行排序,其他行相应更改? [复制]

如何根据特定行中的值对 numpy 数组进行排序?

numpy 排序,随机数,保留小数

NumPy 中的数据统计分析

Python - 如何创建一个空的numpy数组并附加到它,如列表[重复]

如何对数组进行排序但保留C中重复元素的位置?