排序:

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学习指南』排序&索引&抽取函数介绍的更多相关文章

  1. 『Numpy学习指南』Matplotlib绘图

    数据生成: import numpy as np import matplotlib.pyplot as plt func = np.poly1d(np.array([,,,])) func1 = f ...

  2. NumPy学习指南(第2版)

    第一章 NumPy快速入门 首先,我们将介绍如何在不同的操作系统中安装NumPy和相关软件,并给出使用NumPy的简单示例代码. 然后,我们将简单介绍IPython(一种交互式shell工具). 如前 ...

  3. 【NumPy学习指南】day4 多维数组的切片和索引

    ndarray支持在多维数组上的切片操作.为了方便起见,我们可以用一个省略号(...)来 表示遍历剩下的维度. (1) 举例来说,我们先用arange函数创建一个数组并改变其维度,使之变成一个三维数组 ...

  4. 【NumPy学习指南】day5 改变数组的维度

    我们已经学习了怎样使用reshape函数,现在来学习一下怎样将数组展平. (1) ravel 我们可以用ravel函数完成展平的操作: In: b Out: array([[[ 0, 1, 2, 3] ...

  5. NumPy 学习 第二篇:索引和切片

    数组索引是指使用中括号 [] 来定位数据元素,不仅可以定位到单个元素,也可以定位到多个元素.索引基于0,并接受从数组末尾开始索引的负索引. 举个例子,正向索引从0开始,从数组开始向末尾依次加1递增:负 ...

  6. vue学习指南:第一篇 - vue的介绍

    三大主流框架: 1. Vue.js 是目前最火的一个前端框架,react是最流行的前端框架 (react除了开发网站,还可以开发手机app,Vue语法也是可以用于手机App开发的,需要借助于wexx) ...

  7. 『嗨威说』常见的C++函数模板整理(一)

    开学两天,身上的职责直接变为两个班班长,三个小组组长,哇这事情估计够我忙活了,想躲都躲不掉啊,看来我还是真招人推荐各种管理职务啊,以后要是有人推荐我当经理啊领导啊该多好哈哈哈哈.记得今天奶奶生日,很开 ...

  8. NumPy学习笔记 三 股票价格

    NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...

  9. NumPy学习笔记 二

    NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

随机推荐

  1. python 文件操作 练习:把一个目录下的所有文件名,打印一下,不要包含后缀名

    #coding=utf-8 import osos.chdir('d:\\test2')file_list=os.listdir('.')print "file_list:",fi ...

  2. Linux服务器配置---安装telnet

    安装telnet      telnet是标准的远程登录协议,历史悠久.但是telnet的对话数据没有加密,甚至用户名和密码都是明文显示,这样的服务风险极大.目前大多数系统多已经不会再安装这个服务了, ...

  3. Java笔记 #02# 带资源的try语句

    索引 普通的 try.java 带资源的 try.java 当资源为 null 的情况 可以参考的文档与资料 / test.txt 待读取的内容 hello. / 普通的 try.java 读取 te ...

  4. C++设计模式 之 “组件协作”模式:Template Method、Strategy、Observer

    “组件协作”模式: #现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式. #典型模式: Templ ...

  5. Nodejs 实现 WebSocket 太容易了吧!!

    我们基于express和socket.io开发,首先我们需要安装以下包 npm install --save express npm install --save socket.io 服务器端代码: ...

  6. 20145331魏澍琛《网络对抗》逆向及Bof基础

    20145331魏澍琛<网络对抗>逆向及Bof基础 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任 ...

  7. ZooKeeper参数调优

    zookeeper的默认配置文件为zookeeper/conf/zoo_sample.cfg,需要将其修改为zoo.cfg.其中各配置项的含义,解释如下: 1.tickTime:Client-Serv ...

  8. goole机器学习视频链接【学习笔记】

    作者:庄泽彬 说明:在youtu上观看的google的机器学习相关的视频,如何fangqiang请自己解决 机器学习简介:https://www.youtube.com/watch?time_cont ...

  9. Qt Designer中文入门教程

    Qt Designer窗口布局Layouts提供了四种布局方法,他们是: Vertical Layout 纵向布局Horizontal Layout 横向布局Grid Layout  栅格布局Form ...

  10. Unity3D学习笔记(二十一):InputFiled、Dropdown、Scroll Rect、Mask

    InputFiled组件(输入框) Text Component(显示内容):显示输入内容的Text的组件 Text(输入内容):输入的文本内容 Character Limit:字符数量限值,0是无限 ...