兩者都是numpy的使用。
都是先排序(預設從小到大),而後傳回排序後個元素在原數組的索引。
具體使用請看一下實驗:
- 一維數組
>>> import numpy as np
>>> a = np.array([3,5,2,6,7])
>>> np.argsort(a, axis=0) # 第一種方式
array([2, 0, 1, 3, 4], dtype=int64)
>>> a.argsort() # 第二種方式
array([2, 0, 1, 3, 4], dtype=int64)
-
二維數組
對于二維的來說,0軸可以看做是在按行方向排序,就是從上到下;
1軸可以看做按列方向排序,就是從左到右;
對于更高次元,就是按中括号由外到内進行編号,0,1,2……軸。
比如這裡對以下b來說,最外層括号裡有兩個元素,分别是[3,5,1]和[2,4,9],那麼按照0軸排序就是将這兩個元素進行比對,3>2, 5>4, 1<9,
又元素[3,5,1]的index=0;元素[2,4,9]的index=1;是以
傳回值就是 0>1, 0>1, 0<1;由于是預設是從小到大排序;
則傳回值就是 [1, 1, 0] 和 [0,0,1], 放到一起就是下面出現的:
array([[1, 1, 0],
[0, 0, 1]], dtype=int64)
>>> b = np.array([[3,5,1],[2,4,9]])
>>> b
array([[3, 5, 1],
[2, 4, 9]])
>>> np.argsort(b, axis=0) # 第一種方式 在0軸上排序
array([[1, 1, 0],
[0, 0, 1]], dtype=int64)
>>> np.argsort(b, axis=1) # 第一種方式 在1軸上排序
array([[2, 0, 1],
[0, 1, 2]], dtype=int64)
>>> b.argsort() # 第二種方式 預設輸出在1軸上的排序索引
array([[2, 0, 1],
[0, 1, 2]], dtype=int64)
>>> b.argsort(0) # 第二種方式 指定按照0軸排序
array([[1, 1, 0],
[0, 0, 1]], dtype=int64)
>>> b.argsort(1) # 第二種方式 指定按照1軸排序
array([[2, 0, 1],
[0, 1, 2]], dtype=int64)