a[:,::-1]是对列从后往前,行不变。T是数组转置
两者联合起来用,比如
2, 7, 4, 2
35, 9, 1, 5
22, 12, 3, 2
->
2,4,7,2
5,1,9,35
2,3,12,22
再转置
2,5,2
4,1,3
7,9,12
2,35,22
(0,1,2)这是原始的下标
lexsort默认按最后一行元素有小到大排序
所以
上面2,35,22排序成
2,22,35
也就是
(0,2,1)
最后a[这个下标]
2, 7, 4, 2 --- a[0]
22, 12, 3, 2 --- a[2]
35, 9, 1, 5 ---a[1]
所以就完成排序
按照第六列升序排序代码如下:
import numpy as np
a=np.array([[ 2, 7, 4, 2, 8, 9, 15],
[35, 9, 1, 5, 1, 8, 3],
[22, 12, 3, 2, 1, 2, 14],
[3, 0, 5, 3, 11, 7, 6],
[7, 12, 9, 4, 5, 11, 13]])
print(a[:,:6:].T)
print(np.lexsort(a[:,:6:].T))
print(a[np.lexsort(a[:,:6:].T)])
结果:(注意看中间的输出,让你更好理解)
[[ 2 35 22 3 7]
[ 7 9 12 0 12]
[ 4 1 3 5 9]
[ 2 5 2 3 4]
[ 8 1 1 11 5]
[ 9 8 2 7 11]]
[2 3 1 0 4]
[[22 12 3 2 1 2 14]
[ 3 0 5 3 11 7 6]
[35 9 1 5 1 8 3]
[ 2 7 4 2 8 9 15]
[ 7 12 9 4 5 11 13]]
进一步学习,可以阅读文档:https://het.as.utexas.edu/HET/Software/Numpy/reference/generated/numpy.lexsort.html
问题解决的话,请点下采纳