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編寫的函式同樣可以返...