numpy数组排序

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列的矩阵

numpy数组排序_第1张图片

np.sort(x,axis=0)    #沿y轴进行排序,把每一列按从小到大的顺序进行排序

numpy数组排序_第2张图片

np.sort(x,axis=1)    #沿x轴进行排序,把每一行按从小到大的顺序进行排序

numpy数组排序_第3张图片

然而有的时候我们不需要对数组进行排序,只希望找到数组中第k小的值,这个时候就需要用到np.partition函数

np.partition(a,k,axis=none)    #a:数组    k:第几小的值    axis:需要分割的轴

在两个分割区中,元素是任意排序的

你可能感兴趣的:(numpy数组排序)