如何按轴对 numpy 数组进行排序并保留行

Zin*_*hee 5 python arrays sorting numpy

例如,

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

这使

In [12]: X
Out[12]: 
array([[ 1,  2,  3,  4],
       [ 1,  2,  6,  3],
       [12, 35,  1,  6]])
Run Code Online (Sandbox Code Playgroud)

现在如果我使用

In [13]: X.sort(axis=0)

In [14]: X
Out[14]: 
array([[ 1,  2,  1,  3],
       [ 1,  2,  3,  4],
       [12, 35,  6,  6]])
Run Code Online (Sandbox Code Playgroud)

我失去了行结构。我想做的就是一次对一列进行排序并维护行结构。所以

按第三列排序

In [14]: X
Out[14]: 
array([[ 12,  35,  1,  6],
       [ 1,  2,  3,  4],
       [1, 2,  6,  3]])
Run Code Online (Sandbox Code Playgroud)

第三列按顺序排列,行保持不变。

我如何使用 numpy 实现这一目标?

jpp*_*jpp 3

您可以使用np.argsort

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

array([[12, 35,  1,  6],
       [ 1,  2,  3,  4],
       [ 1,  2,  6,  3]])
Run Code Online (Sandbox Code Playgroud)