『Numpy学习指南』排序&索引&抽取函数介绍
排序:
numpy.lexsort():
numpy.lexsort()是个排字典序函数,因为很有意思,感觉也蛮有用的,所以单独列出来讲一下:
强调一点,本函数只接受一个参数!
- import numpy as np
- a = np.array([1,2,3,4,5])
- b = np.array([50,40,30,20,10])
- c = np.lexsort((a,b))
- print(list(zip(a[c],b[c])))
- [(5, 10), (4, 20), (3, 30), (2, 40), (1, 50)]
这是一个间接排序函数,会优先使用后面列排序,后面一样才使用前面的列排序,测试如下:
- a = np.array([1,2,3,4,5])
- b = np.array([40,40,30,20,10])
- c = np.lexsort((a,b))
- print(list(zip(a[c],b[c])))
- [(5, 10), (4, 20), (3, 30), (1, 40), (2, 40)]
交换次序:
- a,b = b,a
- c = np.lexsort((a,b))
- print(list(zip(a[c],b[c])))
- [(40, 1), (40, 2), (30, 3), (20, 4), (10, 5)]
而且可以按照此规则进行多列排序(大于2个):
- a = np.array([1,2,3,4,5])
- b = np.array([50,30,40,20,10])
- d = np.array([400,300,300,100,200])
- c = np.lexsort((a,b,d))
- print(list(zip(a[c],b[c],d[c])))
- [(4, 20, 100), (5, 10, 200), (2, 30, 300), (3, 40, 300), (1, 50, 400)]
numpy中的几种排序手段:
numpy.sort() 正常排序
numpy.msort() 正常排序,定死axis=0
- Notes
- -----
- ``np.msort(a)`` is equivalent to ``np.sort(a, axis=0)``.
array.sort() 原地排序,无return
numpy.argsort() 间接排序
numpy.lexsort() 间接排序,字典序
numpy.sort_complex() 复数排序,先实部后虚部
- np.random.seed(42)
- complex_number = np.random.random(5) + np.random.random(5)*1j
- print(complex_number)
- print(np.sort_complex(complex_number)) # 复数排序,先实后虚
- [ 0.37454012+0.15599452j 0.95071431+0.05808361j 0.73199394+0.86617615j
- 0.59865848+0.60111501j 0.15601864+0.70807258j]
- [ 0.15601864+0.70807258j 0.37454012+0.15599452j 0.59865848+0.60111501j
- 0.73199394+0.86617615j 0.95071431+0.05808361j]
索引:
np.argmax(a) 最大值索引
np.nanargmin(b) 忽略nan的最小值索引
np.argwhere(a<=4) 符合条件的索引
- a = np.array([2,4,8])
- print(np.argmax(a))
- b = np.array([np.nan,2,4])
- print(np.nanargmin(b))
- c = np.array([2,4,8])
- print(np.argwhere(a<=4))
- 2
- 1
- [[0]
- [1]]
np.searchsorted(a,[-2,7])
np.insert(a,indices,[-2,7])
- a = np.arange(5)
- indices = np.searchsorted(a,[-2,7]) # 返回向有序数组中插入,不改变有序性的索引
- print(indices)
- print(np.insert(a,indices,[-2,7])) # 插入函数{目标数组,插入索引,插入数组}
- [0 5]
- [-2 0 1 2 3 4 7]
抽取:
np.extract(condition,a)
np.where(a%2==0)
np.nonzero(a)
- a = np.arange(7)
- condition = (a%2)==0
- print(a[a%2==0]) # 使用布尔索引
- print(np.extract(condition,a)) # 使用np.extract()
- print(np.where(a%2==0)) # 使用np.where()
- print(np.nonzero(a)) # 提取非零元素
- [0 2 4 6]
- [0 2 4 6]
- (array([0, 2, 4, 6]),)
- (array([1, 2, 3, 4, 5, 6]),)
『Numpy学习指南』排序&索引&抽取函数介绍的更多相关文章
- 『Numpy学习指南』Matplotlib绘图
数据生成: import numpy as np import matplotlib.pyplot as plt func = np.poly1d(np.array([,,,])) func1 = f ...
- NumPy学习指南(第2版)
第一章 NumPy快速入门 首先,我们将介绍如何在不同的操作系统中安装NumPy和相关软件,并给出使用NumPy的简单示例代码. 然后,我们将简单介绍IPython(一种交互式shell工具). 如前 ...
- 【NumPy学习指南】day4 多维数组的切片和索引
ndarray支持在多维数组上的切片操作.为了方便起见,我们可以用一个省略号(...)来 表示遍历剩下的维度. (1) 举例来说,我们先用arange函数创建一个数组并改变其维度,使之变成一个三维数组 ...
- 【NumPy学习指南】day5 改变数组的维度
我们已经学习了怎样使用reshape函数,现在来学习一下怎样将数组展平. (1) ravel 我们可以用ravel函数完成展平的操作: In: b Out: array([[[ 0, 1, 2, 3] ...
- NumPy 学习 第二篇:索引和切片
数组索引是指使用中括号 [] 来定位数据元素,不仅可以定位到单个元素,也可以定位到多个元素.索引基于0,并接受从数组末尾开始索引的负索引. 举个例子,正向索引从0开始,从数组开始向末尾依次加1递增:负 ...
- vue学习指南:第一篇 - vue的介绍
三大主流框架: 1. Vue.js 是目前最火的一个前端框架,react是最流行的前端框架 (react除了开发网站,还可以开发手机app,Vue语法也是可以用于手机App开发的,需要借助于wexx) ...
- 『嗨威说』常见的C++函数模板整理(一)
开学两天,身上的职责直接变为两个班班长,三个小组组长,哇这事情估计够我忙活了,想躲都躲不掉啊,看来我还是真招人推荐各种管理职务啊,以后要是有人推荐我当经理啊领导啊该多好哈哈哈哈.记得今天奶奶生日,很开 ...
- NumPy学习笔记 三 股票价格
NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...
- NumPy学习笔记 二
NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...
随机推荐
- Linux服务器---基础设置
Centos分辨率 virtualbox里新安装的Centos 7 的分辨率默认的应该是800*600. 如果是‘最小化安装’的Centos7 进入的就是命令模式 .如果安装的是带有GUI的 ...
- linux服务器上nginx日志访问量统计命令
linux服务器上nginx日志访问量统计命令 日志文件所在地方:/var/log/nginx/access_iqueendress.com.log/var/log/nginx/access_m.iq ...
- POI Excel文件的读取与写入
1. 创建目录 if(!(new File(path).isDirectory())){ new File(path).mkdirs();} 2. 读取Excel文件,并进行写入操作 Workbook ...
- python之路----网络编程--黏包
黏包现象 让我们基于tcp先制作一个远程执行命令的程序(命令ls -l ; lllllll ; pwd) res=subprocess.Popen(cmd.decode('utf-8'), shell ...
- monit
Monit 是一个用来监测系统状态的工具,不但可以用来监视进程.服务.文件.目录.文件系统,还可以在服务 down 掉的时候自动重启服务或者当某个进程占用过多的资源的时候自动停掉进程,并且支持 Ema ...
- iotop监控磁盘动态安装
开始装iotp tar xvf iotop-0.3.1.tar.gz 用python安装(如果没有蟒蛇, yum一个吧) cd iotop-0.3.1 python setup.py build py ...
- [Linux 003]——用户和用户组以及 Linux 权限管理(一)
嗬!没想到吧!学习 Linux 的第三天,我们已经开始接触用户管理,用户组管理,以及权限管理这几个逼格满满的关键字.这几个关键字对于前端程序猿的我来说真的是很高大上有木有,以前尝试学 Linux 的时 ...
- 20145336 张子扬 《网络对抗技术》web基础
20145336张子扬<网络对抗>Exp8 Web基础 实践内容 1.简单的web前端页面(HTML.CSS等) 2.简单的web后台数据处理(PHP) 3.Mysql数据库 4.一个简单 ...
- Educational Codeforces Round 21 Problem E(Codeforces 808E) - 动态规划 - 贪心
After several latest reforms many tourists are planning to visit Berland, and Berland people underst ...
- codevs 1423 骑士 - Tarjan - 动态规划
题目描述 Description Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬. 最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵 ...