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