numpy数组排序函数介绍

本文参考自菜鸟教程,另有需求的朋友可自行查询!

numpy.sort()

函数格式如下:

numpy.sort(a, axis, kind, order)

参数说明:

  • a:要排序的数组对象
  • axis:排序的轴,axis=0按列排序,axis=1按行排序。如果没有数组会被展开,沿着最后的轴排序。
  • kind:排序的方法,如’quicksort’(快速排序,不稳定)、‘mergesort’(归并排序,稳定)、‘heapsort’(堆排序,不稳定)等,默认为快排。
  • order:如果数组包含字段,则是要排序的字段

实例:

import numpy as np  
a = np.array([[2,5],[8,1]])  
print ('我们的数组是:')
print (a)
print ('调用 sort() 函数:')
print (np.sort(a))
print ('按列排序:')
print (np.sort(a, axis =  0))
# 在 sort 函数中排序字段 
dt = np.dtype([('name',  'S10'),('age',  int)]) #s10代表长度为10的字符串
a = np.array([("b",21),("a",25),("d",  17),  ("c",27)], dtype = dt)  
print ('我们的数组是:')
print (a)
print ('按 name 排序:')
print (np.sort(a, order =  'name'))

结果如下:

我们的数组是:
[[2 5]
 [8 1]]
调用 sort() 函数:
[[2 5]
 [1 8]]
按列排序:
[[2 1]
 [8 5]]
我们的数组是:
[(b'b', 21) (b'a', 25) (b'd', 17) (b'c', 27)]
按 name 排序:
[(b'a', 25) (b'b', 21) (b'c', 27) (b'd', 17)]

numpy.argsort()

numpy.argsort() 函数返回的是数组值从小到大的索引值。
实例:

import numpy as np
x=np.array([4,2,3,1])
print('数组为:\n{}'.format(x))
y=x.argsort()
print('从小到大排序后的索引值为:\n{}'.format(y))
print('以排序后的顺序重构原数组:\n{}'.format(x[y]))
print ('使用循环重构原数组:')
for i in y:
    print(x[i], end=" ")

结果如下:

数组为:
[4 2 3 1]
从小到大排序后的索引值为:
[3 1 2 0]
以排序后的顺序重构原数组:
[1 2 3 4]
使用循环重构原数组:
1 2 3 4 

numpy.lexsort()

numpy.lexsort() 用于对多个序列进行排序。把它想象成对电子表格进行排序,每一列代表一个序列,排序时优先照顾靠后的列。
这里举一个应用场景:小升初考试,重点班录取学生按照总成绩录取。在总成绩相同时,数学成绩高的优先录取,在总成绩和数学成绩都相同时,按照英语成绩录取…… 这里,总成绩排在电子表格的最后一列,数学成绩在倒数第二列,英语成绩在倒数第三列。
实例:

import numpy as np
math=np.array([87,90,65,70])
total=np.array([340,250,540,400])
test=np.lexsort((math,total))  #排序后存储的为索引值
print ('调用 lexsort() 函数:\n{}'.format(test))
print ('使用这个索引来获取排序后的数据:')
print(np.array([[math[i],total[i]] for i in test])) #便于理解,转换成二维数组

结果如下:

调用 lexsort() 函数:
[1 0 3 2]
使用这个索引来获取排序后的数据:
[[ 90 250]
 [ 87 340]
 [ 70 400]
 [ 65 540]]
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NumPy是Python中用于科学计算的一个重要库,它提供了高性能的多维数组对象以及对这些数组进行操作的函数NumPy数组排序是对数组元素进行排序的操作,可以按照升序或降序排列。 NumPy提供了多种排序函数,其中最常用的是`np.sort()`函数和`ndarray.sort()`方法。`np.sort()`函数返回一个已排序数组副本,而`ndarray.sort()`方法则直接在原数组上进行排序。 对于结构化数组,它是一种特殊类型的NumPy数组,其中每个元素都可以包含多个字段。结构化数组可以通过定义dtype(数据类型)来创建,每个字段都有一个名称和一个数据类型。 下面是对NumPy数组排序和结构化数组介绍: 1. NumPy数组排序: - `np.sort()`函数:返回一个已排序数组副本,不改变原数组。 - `ndarray.sort()`方法:直接在原数组上进行排序,不返回副本。 - 可以指定`axis`参数来沿着指定轴进行排序。 - 可以使用`kind`参数指定排序算法,如快速排序('quicksort')、归并排序('mergesort')或堆排序('heapsort')。 - 可以使用`order`参数指定按照某个字段进行排序。 2. 结构化数组: - 结构化数组是一种特殊类型的NumPy数组,每个元素都可以包含多个字段。 - 可以通过定义dtype来创建结构化数组,每个字段都有一个名称和一个数据类型。 - 可以使用`np.dtype()`函数定义dtype,指定字段名称和数据类型。 - 可以通过索引或字段名称访问结构化数组的元素。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值