Sort排序
NumPy 的排序方式主要可以概括为直接排序和间接排序两种,直接排序是对数值直接进行排序,间接排序是指根据一个或者多个键对数据集进行排序,在 NumPy 中,直接排序经常使用 sort 函数,间接排序经常使用 argsort 函数和 lexsort 函数,使用 sort 函数排序可以指定一个 axis 参数,可以沿着指定的轴对数据进行排序,如下面代码所示:
import numpy as npnp.random.seed(123) #随机种子arr = np.random.randint(1,50,size = 10) #生成10个随机数arr.sort() #直接排序 所谓直接排序,直接改变原序列的顺序arr = np.random.randint(1,15,size = (3,5)) #生成3行3列的随机数arr.sort(axis = 1) #沿着横轴排序arr.sort(axis = 0) #沿着纵轴排序
argsort排序
使用 argsort 函数和 lexsort 函数,能够在给定一个或者多个键时,得到一个由整数构成的索引数组,这个索引数组表示在新的序列中的位置,使用 argsort 函数排序,示例如下:
arr = np.random.randint(2,20,size = 10)arr.argsort() #返回值为重新排序值的下标arr1 = arr.argsort()
lexsort排序
lexsort 函数可以一次性对要求多个键的数组执行间接排序,使用 lexsort 函数排序示例如下:
a = np.array([1,2,5,4,3])b = np.array([34,23,45,23,12])c = np.array([344,31,111,566,323])d = np.lexsort((a,b,c)) #lexsort函数只接受一个参数,即(a,b,c)#多个键值排序是按照最后一个传入数据计算的print('排序后数组为:',list(zip(a[d],b[d],c[d]))) # zip 缝合函数,将数组进行缝合