NumPy 高级索引
NumPy 高级索引
NumPy 比一般的 Python 序列提供更多的索引方式。除了之前看到的用整数和切片的索引外,数组可以由整数数组索引、布尔索引及花式索引。
整数数组索引
以下实例获取数组中(0,0),(1,1)和(2,0)位置处的元素。
实例
import numpy as np x = np.array([[1, 2], [3, 4], [5, 6]]) y = x[[0,1,2], [0,1,0]] print (y)
输出结果为:
[1 4 5]
以下实例获取了 4X3 数组中的四个角的元素。 行索引是 [0,0] 和 [3,3],而列索引是 [0,2] 和 [0,2]。
实例
import numpy as np x = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]]) print ('我们的数组是:' ) print (x) print ('\n') rows = np.array([[0,0],[3,3]]) cols = np.array([[0,2],[0,2]]) y = x[rows,cols] print ('这个数组的四个角元素是:') print (y)
输出结果为:
我们的数组是: [[ 0 1 2][ 3 4 5][ 6 7 8][ 9 10 11]]这个数组的四个角元素是: [[ 0 2][ 9 11]]
返回的结果是包含每个角元素的 ndarray 对象。
可以借助切片 : 或 … 与索引数组组合。如下面例子:
实例
import numpy as np a = np.array([[1,2,3], [4,5,6],[7,8,9]]) b = a[1:3, 1:3] c = a[1:3,[1,2]] d = a[...,1:] print(b) print(c) print(d)
输出结果为:
[[5 6][8 9]] [[5 6][8 9]] [[2 3][5 6][8 9]]
布尔索引
我们可以通过一个布尔数组来索引目标数组。
布尔索引通过布尔运算(如:比较运算符)来获取符合指定条件的元素的数组。
以下实例获取大于 5 的元素:
实例
import numpy as np x = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]]) print ('我们的数组是:') print (x) print ('\n') # 现在我们会打印出大于 5 的元素 print ('大于 5 的元素是:') print (x[x > 5])
输出结果为:
我们的数组是: [[ 0 1 2][ 3 4 5][ 6 7 8][ 9 10 11]]大于 5 的元素是: [ 6 7 8 9 10 11]
以下实例使用了 ~(取补运算符)来过滤 NaN。
实例
import numpy as np a = np.array([np.nan, 1,2,np.nan,3,4,5]) print (a[~np.isnan(a)])
输出结果为:
[ 1. 2. 3. 4. 5.]
以下实例演示如何从数组中过滤掉非复数元素。
实例
import numpy as np a = np.array([1, 2+6j, 5, 3.5+5j]) print (a[np.iscomplex(a)])
输出如下:
[2.0+6.j 3.5+5.j]
花式索引
花式索引指的是利用整数数组进行索引。
花式索引根据索引数组的值作为目标数组的某个轴的下标来取值。对于使用一维整型数组作为索引,如果目标是一维数组,那么索引的结果就是对应下标的行,如果目标是二维数组,那么就是对应位置的元素。
花式索引跟切片不一样,它总是将数据复制到新数组中。
1、传入顺序索引数组
实例
import numpy as np x=np.arange(32).reshape((8,4)) print (x[[4,2,1,7]])
输出结果为:
[[16 17 18 19][ 8 9 10 11][ 4 5 6 7][28 29 30 31]]
2、传入倒序索引数组
实例
import numpy as np x=np.arange(32).reshape((8,4)) print (x[[-4,-2,-1,-7]])
输出结果为:
[[16 17 18 19][24 25 26 27][28 29 30 31][ 4 5 6 7]]
3、传入多个索引数组(要使用np.ix_)
实例
import numpy as np x=np.arange(32).reshape((8,4)) print (x[np.ix_([1,5,7,2],[0,3,1,2])])
输出结果为:
[[ 4 7 5 6][20 23 21 22][28 31 29 30][ 8 11 9 10]]
NumPy 切片和索引
NumPy 广播(Broadcast)
1 篇笔记 写笔记
wra
107***9066@qq.com
265
关于 np.ix_ 的具体使用:
正文中没有详细说 np.ix_ 是怎么回事,我看了一下 help(numpy.ix_),说的比较详细。比如正文中举的例子中,x[np.ix_([1,5,7,2],[0,3,1,2])]这句话会输出一个4*4的矩阵,其中的元素分别是:
x[1,0] x[1,3] x[1,1] x[1,2] x[5,0] x[5,3] x[5,1] x[5,2] x[7,0] x[7,3] x[7,1] x[7,2] x[2,0] x[2,3] x[2,1] x[2,2]
相当于:
y=np.array([[x[1,0], x[1,3], x[1,1], x[1,2]],\[x[5,0], x[5,3], x[5,1],x[5,2]],\[x[7,0] ,x[7,3], x[7,1], x[7,2]],\[x[2,0], x[2,3], x[2,1], x[2,2]]])
就是说,如果 np.xi_ 中输入两个列表,则第一个列表存的是待提取元素的行标,第二个列表存的是待提取元素的列标,第一个列表中的每个元素都会遍历第二个列表中的每个值,构成新矩阵的一行元素。
wra
wra
107***9066@qq.com
1年前 (2020-03-31)
https://www.runoob.com/numpy/numpy-advanced-indexing.html
NumPy 高级索引相关推荐
- numpy 高级索引技巧
文章目录 numpy高级索引和索引技巧 用索引数组索引 用布尔数组索引 所述ix_()函数 用字符串索引 线性代数 简单数组操作 技巧和窍门 "自动"整形 向量堆叠 直方图 num ...
- numpy高级索引(二维矩阵的索引是二维矩阵)
目录 1.问题描述 2.查阅资料 3.实验 1.问题描述 最近在看语义分割的源码,但是预测阶段有一行代码看的我头大,不知道在索引些什么东西.后来经过查阅资料和实验发现这是numpy的高级索引,故写这篇 ...
- NumPy Cookbook 带注释源码 二、NumPy 高级索引和数组概念
调整图像尺寸 # 这个代码用于调整图像尺寸 # 来源:NumPy Cookbook 2e Ch2.3import scipy.misc import matplotlib.pyplot as plt ...
- python获取数组中大于某一阈值的那些索引值_Python NumPy 高级索引——整数组索引、布尔索引及花式索引...
NumPy 除了之前文章中介绍的用整数和切片的索引外,数组还可以由整数数组索引.布尔索引及花式索引. 整数数组索引 整数索引有助于基于 N 维索引来获取数组中任意元素.每个整数数组表示该维度的下标值. ...
- B07_NumPy 高级索引(整数数组索引,布尔索引,花式索引)
NumPy高级索引 NumPy 比一般的 Python 序列提供更多的索引方式.除了之前看到的用整数和切片的索引外,数组可以由整数数组索引.布尔索引及花式索引. 整数数组索引 以下实例获取数组中(0, ...
- 【Pandas库】(6) 索引操作--改、查、高级索引
各位同学好,今天我和大家分享一下Pandas库的索引操作中的修改值.查找值.高级索引. 首先,我们先定义两个变量ps1存放Series数据,pd1存放DataFrame数据,以便后续操作. impor ...
- Python 科学计算库 Numpy (二) —— 索引及切片
目录 1. 索引及切片 (1)通过下标以及内置函数进行索引切片 (2)使用冒号分隔参数进行切片索引 (3)对部分元素进行索引并切片 (4)对多维数组进行索引切片 2. 高级索引 (1)整数数组索引 ( ...
- mongodb索引生成HTML页面,MongoDB高级索引
在这一章节中,我们来学习高级索引,假设users集合的以下文档 - { "address": { "city": "Haikou", &qu ...
- NumPy学习(索引和切片,合并,分割,copy与deep copy)
NumPy学习(索引和切片,合并,分割,copy与deep copy) 目录 索引和切片合并分割 copy与deep copy 索引和切片 通过索引和切片可以访问以及修改数组元素的值 一维数组 程序示 ...
最新文章
- R语言_基本统计分析
- tensorflow r1.5 版本差异调研
- 自定义FragmentTabHost实现可控制是否保存fragment状态
- How to make a Logical Volume ON AIX5.3
- 学习 | Node.js 之定时任务
- FFmpeg实现将图片转换为视频
- 数位板驱动压力测试_数位屏应如何选择?
- 学校管理系统设计java(数据库、源码、演讲内容、ppt等)
- java解压服务器文件夹,java解压7z文件
- Google浏览器无法上网问题解决
- Bugku CTF Web 滑稽 计算器 GET POST 矛盾 alert 你必须让他停下
- Unity3D点击按钮改变材质球颜色
- python的if-else语法
- 使用NGINX发布DEM切片
- 3D建模教程讲解!PBR场景制作破损的图书馆
- 经典蓝牙与低功耗蓝牙的区别(转)
- seo推广优化的方法
- 趋势科技Pc-cillin 2011网友使用体验
- 开黑不卡顿,运行不掉帧,高通骁龙 835 助力 NEST 2017 王者荣耀组决赛
- 绿盟扫描监测出URL存在http host 头攻击漏洞的解决方案
热门文章
- autojs开启悬浮窗权限_微信悬浮窗功能普及?甚至更胜一筹
- flat在java中的含义_java – 在flatingBy中使用flatMap的优雅方法
- java 按钮不显示文字_java – 使JButton中的文本不可见
- 千人网站服务器,千人云服务器
- 计算机CAD作文,【2人回答】职校课堂里我最喜欢上CAD课600字作文-3D溜溜网
- 白盒测试工具_别再头疼工作效率低!这些超实用的黑盒、白盒测试方法你都用上了吗?...
- java 内部类 引用_在Java中如何从内部引用匿名内部类?
- rda冗余分析步骤_分子生态网络分析(MENA)构建微生物网络示例
- java stringbuffer 转数组_JAVA之旅(十七)——StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder...
- cocos2dx 字体外发光_Ps教程:只需4个图层!即可制作出超炫酷的荧光字体