Python argsort 函式使用說明記錄

2021-09-02 03:54:05 字數 2359 閱讀 7871

argsort(array):返回的是從小到大排序的索引。

>>> a=[5,2,3]

>>> b=np.argsort(a)

>>> b

array([1, 2, 0])

>>>

5,2,3的從小到大的2,3,5,索引分別是[1,2,0] 返回的是這個。

在faster中的layer_utils資料夾的proposal_top_layer.py中有如下**段

#統計有多少個框

length = scores.shape[0]

if length < rpn_top_n:#如果小於5000,就隨機取樣,就是說如果框少於5000個,我也要隨機重複取樣,讓它變成5000個框。

# random selection, maybe unnecessary and loses good proposals

top_inds = npr.choice(length, size=rpn_top_n, replace=true)#size是取樣的數量,replace為true為有放回取樣,false為不放回取樣。

else:

top_inds = scores.argsort(0)[::-1]

top_inds = top_inds[:rpn_top_n]

top_inds = top_inds.reshape(rpn_top_n, )

注意到

top_inds = scores.argsort(0)[::-1]
這裡面,argsort的形式為:np.argsort()[num]

0應該時乙個維度問題,下面分情況研究一下。

當argsort(0)時,按矩陣列從小到大排序

當argsort(1)時,按矩陣行從小到大排序

>>> a

array([[2, 3],

[5, 3],

[6, 4]])

>>> b=a.argsort(1)

>>> b

array([[0, 1],

[1, 0],

[1, 0]])

>>> b=a.argsort(0)

>>> b

array([[0, 0],

[1, 1],

[2, 2]])

加上num就是另一種形式了

num很好理解,就是從小到大排序,如果是num=2,就找排序後下標是2的數的索引,下標從0開始,所以2就是第三大的數所對應的索引。但這個時候,前面的(axi=0或者1)意思與形式2不同,0代表的是從小到大排序,1代表的是從大到小排序。

所以下面的例子中,

a.argsort(0)[2]返回的是下標為2也就是第三大的數,

a.argsort(1)[2]表示的是第三小的數,這裡維度只有3,所以也就是最小的數。

注意到,都是按列來算的。跟a.argsort(0)和a.argsort(1)意思已經不一樣了。

>>> a

array([[2, 3],

[5, 1],

[6, 4],

[4, 9]])

>>> b=a.argsort(1)[3]

>>> b

array([0, 1])

>>> b=a.argsort(0)[3]

>>> b

array([2, 3])

>>> a

array([[2, 3],

[5, 1],

[6, 4],

[4, 9]])

再舉乙個例子

>>> a

array([[2, 3],

[5, 1],

[6, 4]])

>>> a

array([[2, 3],

[5, 1],

[6, 4]])

>>> b=a.argsort(0)[2]

>>> b

array([2, 2])

>>> b=a.argsort(1)[2]

>>> b

array([1, 0])

>>>

從小到大排序,排序後第三大的數對應的索引,按列來看,就是array([2, 2])對應下面第一列的6和第二列的4

>>> a

array([[2, 3],

[5, 1],

[6, 4]])

而b=a.argsort(1)[2]就是從大到小排序,倒數最第三大的,也就是從小到大排序中最小的,分別是第一列的2和第二列的1,索引分別是array([1, 0])。驗證完畢。

函式基礎 匿名函式,函式,箭頭函式,立即執行函式

doctype html html lang en head meta charset utf 8 meta name viewport content width device width,initial scale 1.0 title document title head body body ...

函式 常見函式

def fib n if n 1 return 1if n 2 return 1return fib n 1 fib n 2 def hannuo n,a,b,c n 表示有n個盤子 a 代表第乙個塔,開始的塔 b 代表第二個塔,過渡塔 c 代表第三個塔,目標塔 d.在 中n 2,這個分支可以不要,...

Lua 函式 函式

在lua中,函式是一種對語句和表示式進行抽象的主要機制。函式既可以完成某項特定的任務,也可以只做一些計算並返回結果。lua具有一項非常於總不同的特徵,允許函式返回多個結果 s,e string.find hello lua users lua print s,e 7 9 以lua編寫的函式同樣可以返...