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中处理字符串之endswith()方法的使用简介
May 18 Python
python实现按行切分文本文件的方法
Apr 18 Python
python处理csv数据动态显示曲线实例代码
Jan 23 Python
TensorFlow中权重的随机初始化的方法
Feb 11 Python
python爬虫之模拟登陆csdn的实例代码
May 18 Python
详解Python with/as使用说明
Dec 13 Python
python3中property使用方法详解
Apr 23 Python
Python利用WMI实现ping命令的例子
Aug 14 Python
nginx搭建基于python的web环境的实现步骤
Jan 03 Python
如何使用python切换hosts文件
Apr 29 Python
python中常用的数据结构介绍
Jan 12 Python
Python游戏开发实例之graphics实现AI五子棋
Nov 01 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连接SQLServer2005 的问题解决方法
2010/07/19 PHP
php小技巧 把数组的键和值交换形成了新的数组,查找值取得键
2011/06/02 PHP
php 操作符与控制结构
2012/03/07 PHP
浅析Yii2中GridView常见操作
2016/04/22 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
javascript setTimeout和setInterval 的区别
2009/12/08 Javascript
JS随即打乱数组实现代码
2012/12/03 Javascript
js调试系列 源码定位与调试[基础篇]
2014/06/18 Javascript
Javascript学习笔记之数组的构造函数
2014/11/23 Javascript
jQuery中noConflict()用法实例分析
2015/02/08 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
2015/11/24 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
2017/03/14 Javascript
基于jquery实现多级菜单效果
2017/07/25 jQuery
js用类封装pop弹窗组件
2017/10/08 Javascript
vue中引用swiper轮播插件的教程详解
2018/08/16 Javascript
Vue自定义组件的四种方式示例详解
2020/02/28 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
2020/08/05 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
2021/01/26 Vue.js
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
简明 Python 基础学习教程
2007/02/08 Python
Linux下python制作名片示例
2018/07/20 Python
详解python做UI界面的方法
2019/02/27 Python
Python入门Anaconda和Pycharm的安装和配置详解
2019/07/16 Python
Python 使用 docopt 解析json参数文件过程讲解
2019/08/13 Python
python模块和包的应用BASE_PATH使用解析
2019/12/14 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
2020/01/16 Python
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
面试求职的个人自我评价
2013/11/16 职场文书
2014年教师学期工作总结
2014/11/08 职场文书
2014年行政助理工作总结
2014/11/19 职场文书
升学宴学生答谢词
2015/01/05 职场文书
2015年医院药剂科工作总结
2015/05/04 职场文书
投诉书格式范本
2015/07/02 职场文书
2016年度先进班组事迹材料
2016/03/01 职场文书
2019年暑期安全广播稿!
2019/07/03 职场文书
django 认证类配置实现
2021/11/11 Python