python数列排序函数_NumPy的排序函数

在数组的统计分析中,经常需要对数组进行排序、去重与重复、搜索和计数等操作。而这些操作是通过执行 NumPy 中的相关函数来实现的,下面先对数组的排序进行介绍。

NumPy 的排序方式主要分为直接排序和间接排序两种。直接排序是指对数值直接进行排序;间接排序是指根据一个或多个键对数据集进行排序。在 NumPy 中,直接排序常用 sort() 函数,而间接排序常用 argsort() 函数和 lexsort() 函数。

sort() 函数

sort() 函数用于返回输入数组的排序副本,函数格式如下:

numpy.sort(arr[,axis,kind,order])

函数中主要参数说明如下:

arr:输入数组;

axis:指定沿着某个轴排序数组,axis=0 表示按列排序,axis=1 表示按行排序。若没有设置 axis,则按行排序;

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', '13871234456')

ind = np.lexsort((k,v))

print ('调用lexsort() 函数:',ind)

print ('使用这个索引来获取排序后的数据:')

print ([k[i] + ", " + v[i] for i in ind])

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值