排序

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='

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交集之外的部分。

就是红色的部分。

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集合排序_numpy排序与集合运算用法示例相关推荐

  1. Fintech系列(三) -- python对excel操作模块汇总||推荐指数||用法示例

    python对excel操作模块汇总||推荐指数||用法示例 Working with Excel Files in Python 总览 读写Excel的python第三方开源模块 Excel写操作插 ...

  2. python线程池wait_python线程池 ThreadPoolExecutor 的用法示例

    前言 从Python3.2开始,标准库为我们提供了 concurrent.futures 模块,它提供了 ThreadPoolExecutor (线程池)和ProcessPoolExecutor (进 ...

  3. python线性插值函数_Numpy一维线性插值函数的用法

    直接列出函数: numpy.interp(x, xp, fp, left=None, right=None, period=None) x - 表示将要计算的插值点x坐标 xp - 表示已有的xp数组 ...

  4. Julia程序设计3 数组2 排序、复制、集合运算、字典

    Julia程序设计3 数组2 排序.复制.集合运算.字典 排序 排序算法 查找数组中的元素 复制数组 for语句实现数组的变换与生成 集合运算 字典 创建字典 查阅字典 查看索引 修改字典 添加.删除 ...

  5. TreeSet集合(自然排序和比较器排序)

    TreeSet集合 自然排序和比较器排序 ​ 当指执行插入排序.希尔排序.归并排序等算法时,比较两个对象"大小"的比较操作.我们很容易理解整型的 i>j 这样的比较方式,但当 ...

  6. .NET/C#中对自定义对象集合进行自定义排序的方法

    一个集合可否排序,要看系统知不知道排序的规则,像内建的系统类型,int ,string,short,decimal这些,系统知道怎么排序,而如果一个集合里面放置的是自定义类型,比如自己定义了一个Car ...

  7. 1.8 Collections类操作集合详解——排序,查找,复制

    Collections类操作集合详解 Collections 类是 Java 提供的一个操作 Set.List 和 Map 等集合的工具类. Collections 类提供了许多操作集合的静态方法,借 ...

  8. TreeMap集合特点、排序原理

    TreeMap特点(类似于TreeSet): 1.无序,不允许重复(无序指元素顺序与添加顺序不一致) 2.TreeMap集合默认会对键进行排序,所以键必须实现自然排序和定制排序中的一种 3..底层使用 ...

  9. java 性能 排序_Java常用排序算法及性能测试集合

    package algorithm.sort; import java.lang.reflect.Method; import java.util.Arrays; import java.util.D ...

最新文章

  1. 女生可以学习Web前端吗?
  2. [欢迎加入]博客园.NET Compact Framework讨论组
  3. HashMap实现相同key,对value的操作
  4. k8s示例:RS和Deployment
  5. 序列每天从0开始_序列比对(十一)——计算符号序列的全概率
  6. 磊哥最近面试了好多人,聊聊我的感受!(附面试知识点)
  7. 11.find 查找并复制文件
  8. 精通 Pandas · 翻译完成
  9. python正则表达式之match,search,findall区别
  10. java基本类型有缓冲区类型的有_Java基础(三十四)String、StringBuffer类和数据缓冲区Buffer类...
  11. 单目标跟踪paper小综述
  12. 利用python批量处理Word文件——正文、标题
  13. zabbix3.0.4导入中文模板后乱码问题处理
  14. 客户分析表格怎么做 财务合并报表培训 5分钟看懂财务报表
  15. Google Coral USB加速器介绍
  16. Catagory添加属性、扩展方法
  17. 故事:坐在我隔壁的小王问我什么是HyperLogLog
  18. 二元logistics回归
  19. 教育技术和计算机专业有什么区别,计算机教育与教育技术学有什么不同吗?
  20. 互联网企业的盈利模式?

热门文章

  1. 多线程编程下单例模式与多例模式的使用总结
  2. python3 Unicode字符与16进制编码互转(单个字符)
  3. 运维自动化-ansible
  4. 深度学习机器72小时自学国际象棋达到大师水平
  5. ASP.NET使用ConfigurationSection在Web.Config创建自定义配置节
  6. [Step By Step]SAP HANA PAL多元线性回归预测分析Linear Regression实例FORECASTWITHLR(预测)...
  7. Linux系统调用过程(Linux0.11内核实验)
  8. python logging打印终端_想知道Python如何在终端上打印表格吗?两行代码告诉你!
  9. dicom格式怎么转换_webm怎么转换mp4?视频格式转换你需要知道这个
  10. vue多html标签,Vue实现多标签选择器