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的多维空数组赋值方法
Apr 13 Python
Python3使用正则表达式爬取内涵段子示例
Apr 22 Python
Python 调用 zabbix api的方法示例
Jan 06 Python
Python基本数据结构之字典类型dict用法分析
Jun 08 Python
在python中用print()输出多个格式化参数的方法
Jul 16 Python
基于TensorFlow中自定义梯度的2种方式
Feb 04 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
Feb 27 Python
python实现图像外边界跟踪操作
Jul 13 Python
python实现发送带附件的邮件代码分享
Sep 22 Python
提高python代码运行效率的一些建议
Sep 29 Python
Python语言编写智力问答小游戏功能
Oct 13 Python
关于python中模块和重载的问题
Nov 02 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从数组中删除元素的四种方法实例
2017/05/12 PHP
[JS]点出统计器
2020/10/11 Javascript
checkbox 多选框 联动实现代码
2008/10/22 Javascript
Extjs ajax同步请求时post方式参数发送方式
2009/08/05 Javascript
JavaScript CSS 修改学习第四章 透明度设置
2010/02/19 Javascript
javascript与webservice的通信实现代码
2010/12/25 Javascript
jQuery实现渐变弹出层和弹出菜单的方法
2015/02/20 Javascript
jQuery对象与DOM对象之间的相互转换
2015/03/03 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
谈一谈javascript中继承的多种方式
2016/02/19 Javascript
Jquery on方法绑定事件后执行多次的解决方法
2016/06/02 Javascript
jquery判断页面网址是否有效的两种方法
2016/12/11 Javascript
vue脚手架vue-cli的学习使用教程
2017/06/06 Javascript
nodejs简单读写excel内容的方法示例
2018/03/16 NodeJs
Angular2进阶之如何避免Dom误区
2018/04/02 Javascript
Vue起步(无cli)的啊教程详解
2019/04/11 Javascript
详细介绍Python函数中的默认参数
2015/03/30 Python
Python实现的选择排序算法原理与用法实例分析
2017/11/22 Python
Python中%是什么意思?python中百分号如何使用?
2018/03/20 Python
Flask框架配置与调试操作示例
2018/07/23 Python
python实现弹窗祝福效果
2019/04/07 Python
使用pandas库对csv文件进行筛选保存
2020/05/25 Python
使用python实现下载我们想听的歌曲,速度超快
2020/07/09 Python
html5指南-7.geolocation结合google maps开发一个小的应用
2013/01/07 HTML / CSS
美国旅游网站:Tours4Fun
2017/02/17 全球购物
加拿大最大的箱包及旅游配件零售商:Bentley Leathers
2017/07/19 全球购物
Surfdome西班牙:世界上最受欢迎的生活方式品牌
2019/02/13 全球购物
智乐游戏测试笔试题
2014/05/21 面试题
领导班子党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
千与千寻观后感
2015/06/04 职场文书
竞聘演讲报告:基本写作有哪些?附开头范文
2019/10/16 职场文书
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript
再次探讨go实现无限 buffer 的 channel方法
2021/06/13 Golang
如何用python清洗文件中的数据
2021/06/18 Python
Java Kafka 消费积压监控的示例代码
2021/07/01 Java/Android
javascript对象3个属性特征
2021/11/17 Javascript