排序:

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. Linux服务器配置---ssh配置

    Ssh配置     通过配置文件,我们可以有效的管理ssh 1.空闲时间关闭连接 1)修改配置文件“/etc/ssh/sshd_config”,设置clientAliveInterval和client ...

  2. python3.4学习笔记(二) 类型判断,异常处理,终止程序

    python3.4学习笔记(二) 类型判断,异常处理,终止程序,实例代码: #idle中按F5可以运行代码 #引入外部模块 import xxx #random模块,randint(开始数,结束数) ...

  3. django 加载静态文件(图片,js,css)

    昨天写过一个项目通过django上传展示图片,但是今天写项目的时候发现出现了问题,静态文件加载不出来了,尴尬的一笔~ 记录一下静态文件的使用方法,基础~ ----------------------- ...

  4. VIM 使用心得

    序 到百度外卖任职以后,发现在我们部门无论 mac 还是 windows,程序员们清一色地都在使用 VIM 来编辑代码,期间穿插着各种插件.快捷键.眼花缭乱的命令.我在大学时只会极少的 VIM 命令, ...

  5. 20145318《网络对抗》注入shellcode及Return-to-libc

    20145318<网络对抗>注入shellcode及Return-to-libc 注入shellcode 知识点 注入shellcodeShellcode实际是一段代码(也可以是填充数据) ...

  6. Android实践项目汇报总结(下)

    微博客户端的设计与实现(下) 第四章 系统详细功能实现 本应用实现了如下主要模块:程序启动模块.登录授权模块.主界面显示模块撰写发表微博模块.用户发布信息模块.软件设置模块. 4.1程序启动模块实现 ...

  7. mongodb 有一个坑 报错 no mongos proxies found in seed list

    mongoose 的报当我从 mongoose@4.5.2 升级到 mongoose@4.6.5的时候,出现了一个问题: Unhandled rejection MongoError: no mong ...

  8. windows10下使用source insight出现"source insight program editor已停止工作"的问题

    一.背景 1.1 OS 版本 windows 10 1.2 source insight版本 source insight 3.50.0034 二.解决方案 删除"我的文档"下面的source ins ...

  9. Mysql相关问题收集

    1.查询每个班级的前三名 DROP TABLE IF EXISTS `sc`; CREATE TABLE `sc` ( `id` ) NOT NULL AUTO_INCREMENT, `name` v ...

  10. Where is HttpContent.ReadAsAsync?

    It looks like it is an extension method (in System.Net.Http.Formatting): HttpContentExtensions Class ...