numpy快速排序:np.sort? ? np.argsort
np.sort:在不修改原始數(shù)據(jù)的基礎(chǔ)上返回一個排好序的數(shù)組
例:x = np.array([2 , 1 , 4 , 3 , 5])
np.sort(x)
結(jié)果:array([1, 2, 3, 4, 5])
如果希望用排好序的數(shù)組代替原始數(shù)組问词,可以使用x.sort()
np.argsort:返回的是原始數(shù)組排好序的索引值叹俏,可以通過高級索引創(chuàng)建有序的數(shù)組
i = np.argsort(x)? ? #i:array([1, 0, 3, 2, 4], dtype=int64)
x[i]
結(jié)果:array([1, 2, 3, 4, 5])
進行排序的同時可以通過指定axis參數(shù)的值,沿著多維的行或者列進行排序
例:rand = np.random.RandomState(42)? ? #指定一個種子宛逗,生成固定的隨機數(shù)
x = rand.randint(0,10,(4,6))? ? #生成一個4行6列的矩陣
np.sort(x,axis=0)? ? #沿y軸進行排序吧彪,把每一列按從小到大的順序進行排序
np.sort(x,axis=1)? ? #沿x軸進行排序土铺,把每一行按從小到大的順序進行排序
然而有的時候我們不需要對數(shù)組進行排序,只希望找到數(shù)組中第k小的值瘾腰,這個時候就需要用到np.partition函數(shù)
np.partition(a,k,axis=none)? ? #a:數(shù)組? ? k:第幾小的值? ? axis:需要分割的軸
在兩個分割區(qū)中皆的,元素是任意排序的