numpy排序与集合运算用法示例


Posted in Python onDecember 15, 2017

这里有numpy数组的相关介绍https://3water.com/article/130657.htm

排序

numpy与python列表内置的方法类似,也可通过sort方法进行排序。

用法如下:

In [1]: import numpy as np
In [2]: x = np.random.randn(9)
In [3]: x
Out[3]:
array([-0.4041504 , -0.42198556, 0.92807217, -2.66609196, 1.50915897,
    0.38080873, 1.05325796, -1.16488798, 0.04062064])
In [4]: x.sort()
In [5]: x
Out[5]:
array([-2.66609196, -1.16488798, -0.42198556, -0.4041504 , 0.04062064,
    0.38080873, 0.92807217, 1.05325796, 1.50915897])

可以发现上述的sort方法是直接对x进行了排序而并没有创建一个副本。

但是np.sort()这个顶级的方法,会返回一个副本:

In [6]: x = np.random.randn(6)
In [7]: x
Out[7]:
array([ 0.14240205, 0.48903869, 0.22528632, 1.31659382, 0.00352338,
    0.95574862])
In [8]: np.sort(x)
Out[8]:
array([ 0.00352338, 0.14240205, 0.22528632, 0.48903869, 0.95574862,
    1.31659382])
In [9]: x
Out[9]:
array([ 0.14240205, 0.48903869, 0.22528632, 1.31659382, 0.00352338,
    0.95574862])

传入轴编号,可以实现在某一个轴向上进行排序。

In [34]: x = np.random.randn(5,4)
In [35]: x
Out[35]:
array([[-0.26646799, -0.40714749, -0.76788268, -0.25340467],
    [ 0.70099086, -0.88716684, 0.13461279, 2.14412835],
    [ 0.39718924, -0.14671297, -0.67821163, 1.85798273],
    [-0.29389289, 0.0346094 , 0.25213133, 0.87105479],
    [-0.10797243, 1.60188878, 0.67829493, 0.43291808]])
In [36]: s = x

In [37]: s.sort(0)#按列进行排序
In [38]: s
Out[38]:
array([[-0.29389289, -0.88716684, -0.76788268, -0.25340467],
    [-0.26646799, -0.40714749, -0.67821163, 0.43291808],
    [-0.10797243, -0.14671297, 0.13461279, 0.87105479],
    [ 0.39718924, 0.0346094 , 0.25213133, 1.85798273],
    [ 0.70099086, 1.60188878, 0.67829493, 2.14412835]])
In [39]: x
Out[39]:
array([[-0.29389289, -0.88716684, -0.76788268, -0.25340467],
    [-0.26646799, -0.40714749, -0.67821163, 0.43291808],
    [-0.10797243, -0.14671297, 0.13461279, 0.87105479],
    [ 0.39718924, 0.0346094 , 0.25213133, 1.85798273],
    [ 0.70099086, 1.60188878, 0.67829493, 2.14412835]])
In [40]: x = np.random.randn(5,4)
In [41]: x
Out[41]:
array([[ 0.82309157, -0.56413805, -0.1766557 , -0.31924962],
    [-1.25606694, 2.63622922, 2.47481377, 0.27840961],
    [ 0.63659583, 1.52779004, -0.90582752, 0.82325241],
    [-1.52664294, -0.5285837 , -1.96380368, -0.44323125],
    [ 1.94859294, 2.55676806, 1.53614848, -0.43366557]])
In [42]: x.sort(1)#按行进行排序
In [43]: x
Out[43]:
array([[-0.56413805, -0.31924962, -0.1766557 , 0.82309157],
    [-1.25606694, 0.27840961, 2.47481377, 2.63622922],
    [-0.90582752, 0.63659583, 0.82325241, 1.52779004],
    [-1.96380368, -1.52664294, -0.5285837 , -0.44323125],
    [-0.43366557, 1.53614848, 1.94859294, 2.55676806]])

在这儿,我试图将x赋值给s,结果发现对s排序后,x也变了,这说明,在内存中,实际上,s,x是指向同一组值得。

我也曾试图输入s.sort(2),结果出现了ValueError:axis(=2)outofbounds,这也就和前面的统计函数的axis参数是一致的。

那么也就是说,他的用法和axis一致。

利用排序,我们还能得到分位数(

分位数(英语:Quantile),亦称分位点,是指将一个随机变量的概率分布范围分为几个等份的数值点,常用的有中位数(即二分位数)、四分位数、百分位数等。具体可自行搜索),从而得到特定位置的值。

In [44]: x = np.random.randn(500)
In [45]: x.sort()
In [46]: x[int(0.05 * len(x))] #5%分位数
Out[46]: -1.7657191623368329

还有很多没有深入了解,比如怎么降序排列,待续。

集合运算

unique(x)返回集合中的唯一值,并排序,其实也就是去除重复值。

In [1]: import numpy as np
In [2]: str = np.array(['s','f','r','s','d','f','w','r'])
In [3]: np.unique(str)
Out[3]:
array(['d', 'f', 'r', 's', 'w'],
   dtype='<U1')
In [4]: i = np.array([2,2,2,2,1,1,3,4,5,4,3,5])
In [5]: np.unique(i)
Out[5]: array([1, 2, 3, 4, 5])

intersect1d(x,y)返回集合A和B的交集,并排序

In [6]: k = np.arange(8)

In [7]: np.intersect1d(i, k)
Out[7]: array([1, 2, 3, 4, 5])

union1d(x,y)返回集合A和B的并集,并排序

In [8]: np.union1d(i,k)
Out[8]: array([0, 1, 2, 3, 4, 5, 6, 7])

in1d(x,y)返回一个A包含于B的布尔型数组

In [10]: np.in1d(k,i)
Out[10]: array([False, True, True, True, True, True, False, False], dtype=bool)

setdiff1d(x,y)集合的差,包含于A但不包含于B,相当于A-(A∩B)

In [12]: np.setdiff1d(k,i)
Out[12]: array([0, 6, 7])
setxor1d(x,y)存在于A中但不同时存在于B中,也就是对称差,说白了就是A和B交集之外的部分。

numpy排序与集合运算用法示例

就是红色的部分。

In [13]: s = np.arange(4,12)
In [14]: s
Out[14]: array([ 4, 5, 6, 7, 8, 9, 10, 11])
In [15]: np.setxor1d(s,k)
Out[15]: array([ 0, 1, 2, 3, 8, 9, 10, 11])

总结

以上就是本文关于numpy排序与集合运算用法示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
python递归计算N!的方法
May 05 Python
python实现DES加密解密方法实例详解
Jun 30 Python
Python内建数据结构详解
Feb 03 Python
Python 搭建Web站点之Web服务器与Web框架
Nov 06 Python
Python爬取附近餐馆信息代码示例
Dec 09 Python
pycharm打开命令行或Terminal的方法
Jan 16 Python
使用Python 自动生成 Word 文档的教程
Feb 13 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
Feb 29 Python
django admin后管定制-显示字段的实例
Mar 11 Python
Python批量将图片灰度化的实现代码
Apr 11 Python
Python3.8官网文档之类的基础语法阅读
Sep 04 Python
python图像处理 PIL Image操作实例
Apr 09 Python
Python3实现发送QQ邮件功能(html)
Dec 15 #Python
Python3实现发送QQ邮件功能(文本)
Dec 15 #Python
numpy数组拼接简单示例
Dec 15 #Python
浅谈numpy数组的几种排序方式
Dec 15 #Python
Python多线程爬虫实战_爬取糗事百科段子的实例
Dec 15 #Python
python导入csv文件出现SyntaxError问题分析
Dec 15 #Python
python matplotlib中文显示参数设置解析
Dec 15 #Python
You might like
php中日期加减法运算实现代码
2011/12/08 PHP
php生成局部唯一识别码LUID的代码
2012/10/06 PHP
PHP实现定时执行任务的方法
2014/10/05 PHP
php判断linux下程序问题实例
2015/07/09 PHP
PHP基于Redis消息队列实现发布微博的方法
2017/05/03 PHP
在每个匹配元素的外部插入新元素的方法
2013/12/20 Javascript
jQuery避免$符和其他JS库冲突的方法对比
2014/02/20 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
举例详解JavaScript中Promise的使用
2015/06/24 Javascript
Jquery常用的方法汇总
2015/09/01 Javascript
Express的路由详解
2015/12/10 Javascript
ionic2懒加载配置详解
2017/09/01 Javascript
vue-router的HTML5 History 模式设置
2018/09/08 Javascript
Vue框架里使用Swiper的方法示例
2018/09/20 Javascript
微信小程序实现选项卡效果
2018/11/06 Javascript
一个手写的vue放大镜效果
2019/08/09 Javascript
QML实现圆环颜色选择器
2019/09/25 Javascript
JS数组方法join()用法实例分析
2020/01/18 Javascript
解决removeEventListener 无法清除监听的问题
2020/10/30 Javascript
解决vue watch数据的方法被调用了两次的问题
2020/11/07 Javascript
[56:56]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
在Python中使用PIL模块处理图像的教程
2015/04/29 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
2017/05/23 Python
Django中自定义查询对象的具体使用
2019/10/13 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
有机童装:Toby Tiger
2018/05/23 全球购物
会计出纳员的自我评价
2014/01/15 职场文书
关于圣诞节的广播稿
2014/01/26 职场文书
星级党支部申报材料
2014/05/31 职场文书
会计个人实习计划书
2014/08/15 职场文书
个人债务授权委托书范本
2014/10/05 职场文书
留学推荐信英文范文
2015/03/26 职场文书
公司员工体检通知
2015/04/21 职场文书
教学反思怎么写
2016/02/24 职场文书
喜迎建国70周年:有关爱国的名言名句
2019/09/24 职场文书
nginx反向代理时如何保持长连接
2021/03/31 Servers