『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学习指南>第二版.<数学分 ...
随机推荐
- python 文件操作 练习:把一个目录下的所有文件名,打印一下,不要包含后缀名
#coding=utf-8 import osos.chdir('d:\\test2')file_list=os.listdir('.')print "file_list:",fi ...
- Linux服务器配置---安装telnet
安装telnet telnet是标准的远程登录协议,历史悠久.但是telnet的对话数据没有加密,甚至用户名和密码都是明文显示,这样的服务风险极大.目前大多数系统多已经不会再安装这个服务了, ...
- Java笔记 #02# 带资源的try语句
索引 普通的 try.java 带资源的 try.java 当资源为 null 的情况 可以参考的文档与资料 / test.txt 待读取的内容 hello. / 普通的 try.java 读取 te ...
- C++设计模式 之 “组件协作”模式:Template Method、Strategy、Observer
“组件协作”模式: #现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式. #典型模式: Templ ...
- Nodejs 实现 WebSocket 太容易了吧!!
我们基于express和socket.io开发,首先我们需要安装以下包 npm install --save express npm install --save socket.io 服务器端代码: ...
- 20145331魏澍琛《网络对抗》逆向及Bof基础
20145331魏澍琛<网络对抗>逆向及Bof基础 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任 ...
- ZooKeeper参数调优
zookeeper的默认配置文件为zookeeper/conf/zoo_sample.cfg,需要将其修改为zoo.cfg.其中各配置项的含义,解释如下: 1.tickTime:Client-Serv ...
- goole机器学习视频链接【学习笔记】
作者:庄泽彬 说明:在youtu上观看的google的机器学习相关的视频,如何fangqiang请自己解决 机器学习简介:https://www.youtube.com/watch?time_cont ...
- Qt Designer中文入门教程
Qt Designer窗口布局Layouts提供了四种布局方法,他们是: Vertical Layout 纵向布局Horizontal Layout 横向布局Grid Layout 栅格布局Form ...
- Unity3D学习笔记(二十一):InputFiled、Dropdown、Scroll Rect、Mask
InputFiled组件(输入框) Text Component(显示内容):显示输入内容的Text的组件 Text(输入内容):输入的文本内容 Character Limit:字符数量限值,0是无限 ...