仅按第二行排序np 2维数组

Pho*_*nix 0 python numpy

我有这个np数组:

array([[0, 0, 0, 0, 4, 4],
       [2, 3, 5, 6, 5, 6]])
Run Code Online (Sandbox Code Playgroud)

我想在第二行对它进行排序,这样第一行就会相应调整.所以输出应该是这样的:

array([[0, 0, 0, 4, 0, 4],
       [2, 3, 5, 5, 6, 6]])
Run Code Online (Sandbox Code Playgroud)

有快速的方法吗?

Kas*_*mvd 5

您可以使用np.argsort()获取第二行的排序版本的索引,并使用这些索引重新排列数组的列:

In [38]: a = np.array([[0, 0, 0, 0, 4, 4],
    ...:        [2, 3, 5, 6, 5, 6]])
    ...:        

In [39]: a[:, np.argsort(a[1])]
Out[39]: 
array([[0, 0, 0, 4, 0, 4],
       [2, 3, 5, 5, 6, 6]])
Run Code Online (Sandbox Code Playgroud)