numpy数组排序
2018-08-20 本文已影响0人
浅灰灬
numpy快速排序:np.sort np.argsort
np.sort:在不修改原始数据的基础上返回一个排好序的数组
例:x = np.array([2 , 1 , 4 , 3 , 5])
np.sort(x)
结果:array([1, 2, 3, 4, 5])
如果希望用排好序的数组代替原始数组,可以使用x.sort()
np.argsort:返回的是原始数组排好序的索引值,可以通过高级索引创建有序的数组
i = np.argsort(x) #i:array([1, 0, 3, 2, 4], dtype=int64)
x[i]
结果:array([1, 2, 3, 4, 5])
进行排序的同时可以通过指定axis参数的值,沿着多维的行或者列进行排序
例:rand = np.random.RandomState(42) #指定一个种子,生成固定的随机数
x = rand.randint(0,10,(4,6)) #生成一个4行6列的矩阵
np.sort(x,axis=0) #沿y轴进行排序,把每一列按从小到大的顺序进行排序
np.sort(x,axis=1) #沿x轴进行排序,把每一行按从小到大的顺序进行排序
然而有的时候我们不需要对数组进行排序,只希望找到数组中第k小的值,这个时候就需要用到np.partition函数
np.partition(a,k,axis=none) #a:数组 k:第几小的值 axis:需要分割的轴
在两个分割区中,元素是任意排序的