在python中使用numpy.argsort对列表的每一列进行排序

在python中使用numpy.argsort对列表的每一列进行排序,python,numpy,sorting,numpy-ndarray,columnsorting,Python,Numpy,Sorting,Numpy Ndarray,Columnsorting,我正在尝试使用numpy.argsort对列表中的每一列进行排序。但是,我得到的输出与正确的排序不匹配。我试图排序的列表的名称是“CD”。 下面,我提供了我目前使用的代码和不正确的输出 打印(numpy.argsort(CD,axis=0)) CD列出了下面的一张 [[90, 85, 71, 48], [28, 75, 2, 71], [5, 93, 15, 56], [59, 91, 29, 43], [28, 24, 82, 35], [13, 102, 77, 21], [85

我正在尝试使用numpy.argsort对列表中的每一列进行排序。但是,我得到的输出与正确的排序不匹配。我试图排序的列表的名称是“CD”。 下面,我提供了我目前使用的代码和不正确的输出

打印(numpy.argsort(CD,axis=0))

CD列出了下面的一张

[[90, 85, 71, 48], 
[28, 75, 2, 71], 
[5, 93, 15, 56], 
[59, 91, 29, 43], 
[28, 24, 82, 35], 
[13, 102, 77, 21], 
[85, 102, 33, 64], 
[80, 66, 64, 30], 
[91, 78, 41, 1], 
[77, 33, 30, 50]]
输出是

[[2 4 1 8]
 [5 9 2 5]
 [1 7 3 7]
 [4 1 9 4]
 [3 8 6 3]
 [9 0 8 0]
 [7 3 7 9]
 [6 2 0 2]
 [0 5 5 6]
 [8 6 4 1]]
如果你能给我一个可能出错的提示,我将不胜感激

编辑


我想得到排序列的索引。不是实际的数字。很抱歉,没有首先清除此内容。argsort返回已排序数组的索引

我想你想要的是
numpy.sort

print(numpy.sort(CD,axis=0))
# [[  5  24   2   1]
#  [ 13  33  15  21]
#  [ 28  66  29  30]
#  [ 28  75  30  35]
#  [ 59  78  33  43]
#  [ 77  85  41  48]
#  [ 80  91  64  50]
#  [ 85  93  71  56]
#  [ 90 102  77  64]
#  [ 91 102  82  71]]
也许您只是想(返回数组的排序副本)数组,而不是
argsort
(返回将对数组排序的索引)

获得你想要的东西的有效(但缓慢)方法:

np.argsort(np.argsort(x, axis = 0), axis = 0)
Out[]: 
array([[8, 5, 7, 5],
       [2, 3, 0, 9],
       [0, 7, 1, 7],
       [4, 6, 2, 4],
       [3, 0, 9, 3],
       [1, 8, 8, 1],
       [7, 9, 4, 8],
       [6, 2, 6, 2],
       [9, 4, 5, 0],
       [5, 1, 3, 6]], dtype=int64)

实际上,您需要的是一个反向argsort,您可以在其中找到有关

要对列进行排序的元素的大量信息?第一个要素?还是要保留列并对每个列进行排序?问题还很不清楚,;你能举一个例子说明CD在分类后是什么样子的吗?
np.argsort(np.argsort(x, axis = 0), axis = 0)
Out[]: 
array([[8, 5, 7, 5],
       [2, 3, 0, 9],
       [0, 7, 1, 7],
       [4, 6, 2, 4],
       [3, 0, 9, 3],
       [1, 8, 8, 1],
       [7, 9, 4, 8],
       [6, 2, 6, 2],
       [9, 4, 5, 0],
       [5, 1, 3, 6]], dtype=int64)