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 相关文章推荐
解决python2.7 查询mysql时出现中文乱码
Oct 09 Python
Python类装饰器实现方法详解
Dec 21 Python
python进行文件对比的方法
Dec 24 Python
Python实现查找数组中任意第k大的数字算法示例
Jan 23 Python
python使用mitmproxy抓取浏览器请求的方法
Jul 02 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
May 03 Python
Python网页解析器使用实例详解
May 30 Python
flask开启多线程的具体方法
Aug 02 Python
Python如何批量生成和调用变量
Nov 21 Python
Python 微信公众号文章爬取的示例代码
Nov 30 Python
在vscode中启动conda虚拟环境的思路详解
Dec 25 Python
Pandas数据分析的一些常用小技巧
Feb 07 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
phpMyAdmin 安装教程全攻略
2007/03/19 PHP
PHP学习笔记之一
2011/01/17 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
PHP里的$_GET数组介绍
2019/03/22 PHP
PHP常量define和const的区别详解
2019/05/18 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
精心挑选的15个jQuery下拉菜单制作教程
2012/06/15 Javascript
2014最热门的JavaScript代码高亮插件推荐
2014/11/25 Javascript
jQuery中:has选择器用法实例
2014/12/30 Javascript
详细解读JavaScript的跨浏览器事件处理
2015/08/12 Javascript
JS+DIV+CSS实现的经典标签切换效果代码
2015/09/14 Javascript
javascript用正则表达式过滤空格的实现代码
2016/06/14 Javascript
Javascript实现前端简单的路由实例
2016/09/11 Javascript
js实现文字向上轮播功能
2017/01/13 Javascript
Bootstrap table学习笔记(2) 前后端分页模糊查询
2017/05/18 Javascript
详解angularJs中关于ng-class的三种使用方式说明
2017/06/02 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
表格展示利器 Bootstrap Table实例代码
2017/09/06 Javascript
Vue.js简易安装和快速入门(第二课)
2017/10/17 Javascript
cropper js基于vue的图片裁剪上传功能的实现代码
2018/03/01 Javascript
JavaScript同源策略和跨域访问实例详解
2018/04/03 Javascript
详解利用eventemitter2实现Vue组件通信
2019/11/04 Javascript
Python Web框架Flask中使用百度云存储BCS实例
2015/02/08 Python
Python之日期与时间处理模块(date和datetime)
2017/02/16 Python
PyQt5主窗口动态加载Widget实例代码
2018/02/07 Python
python3.7环境下安装Anaconda的教程图解
2019/09/10 Python
Python3连接Mysql8.0遇到的问题及处理步骤
2020/02/17 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
2020/04/03 Python
Python实现CAN报文转换工具教程
2020/05/05 Python
Python实现播放和录制声音的功能
2020/08/12 Python
is_file和file_exists效率比较
2021/03/14 PHP
雅诗兰黛香港官网:Estee Lauder香港
2017/09/26 全球购物
Nili Lotan官网:Nili Lotan同名品牌
2018/01/07 全球购物
英国邮购活的植物主要供应商:Gardening Direct
2019/01/28 全球购物
小学生交通安全寄语
2015/02/27 职场文书
公司车辆维修管理制度
2015/08/05 职场文书