argsort
所屬模塊:內置
功能:將數組或矩陣每一行降序或升序,返回其索引
該網站可在線測試本文代碼,以便快速理解本文代碼:
http://kakazai.cn/index.php/Kaka/Python/query/name/argsort
實例1:數組升序
#!/usr/bin/python3
#code-python(3.6)
import numpy as np
a = np.array([4,2,5,7])
b = a.argsort() #將數組升序排列,但不改變數組,且返回對應的索引
print(a) #[4 2 5 7],其索引是[0,1,2,3]
print(b) #升序后的索引是[1 0 2 3],對應元素[2,4,5,7]
1
2
3
4
5
6
7
實例2:數組降序
#!/usr/bin/python3
#code-python(3.6)
import numpy as np
a = np.array([4,2,5,7])
b = a.argsort()[::-1] #將數組降序排列,但不改變數組,且返回對應的索引
print(a) #[4 2 5 7],其索引是[0,1,2,3]
print(b) #降序后的索引是[3 2 0 1],對應元素[7,5,4,2]
1
2
3
4
5
6
7
實例3:取出單個索引
#!/usr/bin/python3
#code-python(3.6)
import numpy as np
a = np.array([4,2,5,7])
b = a.argsort() #將數組升序排列,但不改變數組,且返回對應的索引
#打印其索引,三個結果都一樣
print(b) #[1 0 2 3]
print(b[0],b[1],b[2],b[3]) #1 0 2 3
print(a.argsort()[0],a.argsort()[1],a.argsort()[2],a.argsort()[3]) #1 0 2 3
1
2
3
4
5
6
7
8
9
實例4:將矩陣每一行降序排列
#!/usr/bin/python3
#code-python(3.6)
import numpy as np
a = np.array([[9,8,7],[3,4,6],[6,5,3]])
indexs = a.argsort()[:,::-1] #將矩陣的每一行都降序排列,但不改變矩陣,且返回對應的索引
print(a)
print(indexs)
1
2
3
4
5
6
7
實例5:將矩陣每一行升序排列
#!/usr/bin/python3
#code-python(3.6)
import numpy as np
a = np.array([[9,8,7],[3,4,6],[6,5,3]])
indexs = a.argsort() #將矩陣每一行升序排列,但不改變矩陣,且返回對應的索引
print(a)
print(indexs)