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 爬虫学习笔记之正则表达式
Sep 21 Python
关于Python中空格字符串处理的技巧总结
Aug 10 Python
python difflib模块示例讲解
Sep 13 Python
python实现壁纸批量下载代码实例
Jan 25 Python
python监控进程脚本
Apr 12 Python
python保存文件方法小结
Jul 27 Python
在Python中给Nan值更改为0的方法
Oct 30 Python
python正向最大匹配分词和逆向最大匹配分词的实例
Nov 14 Python
浅谈python之高阶函数和匿名函数
Mar 21 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
Jun 12 Python
Django实现跨域的2种方法
Jul 31 Python
python 模块重载的五种方法
Apr 24 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
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
2011/04/23 PHP
PHP If Else(elsefi) 语句
2013/04/07 PHP
基于PHP 面向对象之成员方法详解
2013/05/04 PHP
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
PHP上传文件及图片到七牛的方法
2018/07/25 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
2019/04/23 PHP
url地址自动加#号问题说明
2010/08/21 Javascript
菜鸟javascript基础资料整理2
2010/12/06 Javascript
基于jquery的回到页面顶部按钮
2011/06/27 Javascript
javascript object array方法使用详解
2012/12/03 Javascript
js关闭模态窗口刷新父页面或跳转页面
2012/12/13 Javascript
JQuery入门——事件切换之toggle()方法应用介绍
2013/02/05 Javascript
js判断undefined变量类型使用typeof
2013/06/03 Javascript
Javascript排序算法之合并排序(归并排序)的2个例子
2014/04/04 Javascript
JS中字符串trim()使用示例
2015/05/26 Javascript
jQuery平滑旋转幻灯片特效代码分享
2015/09/07 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
2016/02/29 Javascript
微信小程序 详解页面跳转与返回并回传数据
2017/02/13 Javascript
原生javascript实现读写CSS样式的方法详解
2017/02/20 Javascript
微信小程序中hidden不生效原因的解决办法
2017/04/26 Javascript
JS运动特效之同时运动实现方法分析
2018/01/24 Javascript
Vue2.5 结合 Element UI 之 Table 和 Pagination 组件实现分页功能
2018/01/26 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
Vue中使用canvas方法总结
2019/02/12 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
浅谈关于vue中scss公用的解决方案
2019/12/02 Javascript
vue实现验证用户名是否可用
2021/01/20 Vue.js
Python 2.7中文显示与处理方法
2018/07/16 Python
Python3几个常见问题的处理方法
2019/02/26 Python
详解css3中的伪类before和after常见用法
2020/11/17 HTML / CSS
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
2019/09/09 HTML / CSS
采购部长岗位职责
2014/06/13 职场文书
工程项目合作意向书
2015/05/08 职场文书
2015小学教师德育工作总结
2015/05/12 职场文书
贫困证明书范文
2015/06/16 职场文书
mybatis 获取无数据的字段不显示的问题
2021/07/15 Java/Android