numpy高级应用——排序的高级用法

本文深入探讨了NumPy中的排序方法,包括ndarray类的sort方法与numpy库sort方法的区别,间接排序的argsort和lexsort方法的使用,以及如何通过kind参数实现稳定排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 区分数组类的sort方法和numpy的sort方法

ndarray的sort方法

与Python列表的sort方法一样,numpy对于ndarray类的排序sort方法也是直接在原数组上进行的。

import numpy as np

arr = np.random.randn(6)
arr.sort()

上方代码就是sort方法在源数据上的改变。对于数组排序时需要注意一点,如果目标数组是一个视图(切片),则原始数组同样将会被修改,

import numpy as np

arr = np.random.randn(3, 5)
print(arr)

arr[:, 0].sort()
print(arr)

numpy库sort方法

上面是数组类的sort方法,numpy的sort方法则会在排序后返回的是一个副本

arr = np.random.randn(5)
arr2 = np.sort(arr)
print(arr)

numpy的sort方法使用后不在源数据上进行改变。

两个方法都能够接收一个axis参数,沿着指定轴向进行排序,
在这里插入图片描述
两个排序方法也可以对升序和降序进行设置。

2.间接排序

数据分析工作中,常常根据一个或多个键对数据集进行排序,这就是间接排序。argsort方法和lexsort方法是numpy中实现间接排序的方法。

argsort方法

方法使用

在这里插入图片描述
上面的代码是argsort方法对一维数组进行排序,argsort方法返回的结果实际上是排序后数组元素索引的位置。

如果是一个二维数组,根据数组的第一列进行排序,
在这里插入图片描述

kind参数

在这里插入图片描述
保持等价元素的相对位置,将argsort方法的kind参数设置为"mergesort",即实现了稳定排序,
在这里插入图片描述
对稳定排序的解释,
在这里插入图片描述

lexsort方法

该方法和argsort方法差不多,区别在于lexsort方法可以一次性对多个键进行间接排序,
在这里插入图片描述
这个排序实际上是有顺序的,首先对last_name进行排序,last_name排序时,同样牵动着一同排序的first_name中的值进行排序。当last_name中存在相同的值时,再根据first_name中的值对数组进行排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值