python数列排序函数_NumPy的排序函数
在数组的统计分析中,经常需要对数组进⾏排序、去重与重复、搜索和计数等操作。⽽这些操作是通过执⾏ NumPy 中的相关函数来实现的,下⾯先对数组的排序进⾏介绍。
NumPy 的排序⽅式主要分为直接排序和间接排序两种。直接排序是指对数值直接进⾏排序;间接排序是指根据⼀个或多个键对数据集进⾏排序。在 NumPy 中,直接排序常⽤ sort() 函数,⽽间接排序常⽤ argsort() 函数和 lexsort() 函数。
sort() 函数
sort() 函数⽤于返回输⼊数组的排序副本,函数格式如下:
numpy.sort(arr[,axis,kind,order])
函数中主要参数说明如下:
arr:输⼊数组;
axis:指定沿着某个轴排序数组,axis=0 表⽰按列排序,axis=1 表⽰按⾏排序。若没有设置 axis,则按⾏排序;
python 定义数组
kind:指定排序算法是快速排序(Quicksort)、归并排序(Mergesort)或是堆排序(Heapsort),默认值为 Quicksort;
order:如果数组包含字段,则⽤于指明排序的字段。
sort() 函数除了 arr 参数外,其余参数都为可选项。
sort() 函数⽰例代码 example1 如下。
# -*- coding: utf-8 -*-
import numpy as np
arr = np.array([[4,5,3],[8,1,7]])
print('原数组',arr)
a =np.sort(arr) #调⽤ sort() 函数
print('sort()函数排序',a)
b = np.sort(arr,axis=0) #沿轴 0 排序
print('沿轴 0 排序',b)
c = np.sort(arr,axis=1) #沿轴 1 排序
print('沿轴 1 排序',c)
# 使⽤sort 函数设置排序字段
dt = np.dtype([('name',np.str,10),('age',int)])
arr = np.array([("李明",19),("王⼒",21),("张艳",18)],dtype = dt)
print ('⾃定义的数组是:',arr)
print('按 name 排序:')
print(np.sort(arr, order='name'))
argsort() 函数
argsort() 函数⽤于使输⼊数组沿着给定轴执⾏间接排序,并根据指定排序类型返回数据的索引数组。使⽤该索引数组可以获得排序数据。
argsort() 函数的格式和参数与 sort() 函数相同。其⽰例代码 example2 如下。
# -*- coding: utf-8 -*-
import numpy as np
arr = np.array([4,5,3,8,1,7])
print('原数组',arr)
a = np.argsort(arr) #数组排序后的索引数组
print('调⽤argsort() 函数:',a)
#根据索引数组重构排序数组
print ('⽤循环输出排序数组')
for i in a:
print(arr[a])
lexsort() 函数
lexsort() 函数使⽤键序列执⾏间接排序,键可以看作是电⼦表格中的⼀列,最后⼀个键是排序的主键,该函数返回⼀个索引数组。使⽤该索引数组可以获得排序数据。lexsort() 函数格式如下:
numpy.lexsort(keys[,axis])
函数中主要参数说明如下:
keys:键序列;
axis:指定沿着某个轴排序数组,为可选项。
其⽰例代码 example3 如下。
# -*- coding: utf-8 -*-
import numpy as np
k = ('name','age','tel')
v = ('李明', '21', '138********')
ind = np.lexsort((k,v))
print ('调⽤lexsort() 函数:',ind)
print ('使⽤这个索引来获取排序后的数据:')
print ([k[i] + ", " + v[i] for i in ind])

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。