NumPy函数进行统计分析(排序)

本文介绍了NumPy库中的排序功能,包括直接排序函数sort(),间接排序的argsort()和lexsort(),以及它们在处理数组和自定义字段排序时的用法和示例。
摘要由CSDN通过智能技术生成
前言

今天我们学习的是统计分析中的排序,NumPy的排序方式主要分为直接排序间接排序两种,直接排序是指对数值直接进行排序,间接排序是指一个或多个键对数据集进行排序。在NumPy中直接排序是sort函数,而间接排序常用argsort()函数lexsort()函数。

1.sort函数

函数格式:

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

arr:输入数组

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

kind:指定排序算法是快速排序(Quicksort),归并排序(Mergesort)或是堆排序(Heapsort),默认值是Quciksort

order:如果数组含字段,则用于指明排序的字段

代码实列:

import numpy as np

arr = np.array([[4,5,3],[8,1,7]])
print("原数组",arr)
# 原数组 [[4 5 3]
#  [8 1 7]]

a=np.sort(arr)
print("sort()排序",a)
# sort()排序 [[3 4 5]
#  [1 7 8]]

b=np.sort(arr,axis=0)
print("沿列排序",b)
# 沿列排序 [[4 1 3]
#  [8 5 7]]

c=np.sort(arr,axis=1)
print("沿行排序",c)
# 沿行排序 [[3 4 5]
#  [1 7 8]]

#使用sort函数设置排序字段
dt=np.dtype([('name',str,10),('age',int)])
arr2=np.array([('李明',19),('王力',21),('张艳',18)],dtype=dt)
print("自定义数组是",arr2)
print('按name排序:')
print(np.sort(arr2,order='name'))
# 自定义数组是 [('李明', 19) ('王力', 21) ('张艳', 18)]
# 按name排序:
# [('张艳', 18) ('李明', 19) ('王力', 21)]
 2.argsort()函数

理解:argsort()函数用于使输入数组沿着给定轴执行间接排序,并根据指定排序类型返回数据的索引数组

函数格式:跟sort函数相同

代码实列:

import numpy as np

#argsort()函数
arr=np.array([4,5,2,6,9])   #索引0开始
print('原数组',arr)
#原数组 [4 5 2 6 9]

a=np.argsort(arr)
print('调用argsort()',a)  #排序数组后,显示数组原先索引
#调用argsort() [2 0 1 3 4]

#根据索引数组重构排序数组
print('用循环输出排序数组')
for i in a:
    print(arr[i])
#用循环输出排序数组
# 2
# 4
# 5
# 6
# 9
3.lexsort()函数

理解:lexsort()函数使用键序列执行间接排序,键可以看作是电子表格中的一列,最后一个键是排序的主键,该函数返回一个索引数组,使用该索引数组可以获得排序数据

函数格式:

numpy.lexsort(keys[,axis])

 代码示例:

import numpy as np

k=('name','age','tel')
v=('李明','21','138923244')
ind=np.lexsort((k,v))
print("调用lexsort",ind)
print('使用这个索引来获取排序后的数据:')
for i in ind:
    print(k[i] + ',' + v[i])

# 调用lexsort [2 1 0]
# 使用这个索引来获取排序后的数据:
# tel,138923244
# age,21
# name,李明

本篇文章就到这里,谢谢大家观看!记得点赞收藏~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值