首页 > 其他分享 >【Numpy总结】第四节:Numpy的切片索引与高级索引

【Numpy总结】第四节:Numpy的切片索引与高级索引

时间:2022-09-30 16:35:38浏览次数:47  
标签:输出 选出 Numpy 索引 np 数组 print 第四节

一、Numpy的切片索引

1.1 使用slice内置函数(不常用)

ndarray对象的内容可以通过切片来访问,与 Python 中 list 的切片操作完全一样。 使用slice 并设置start, stop 及 step 参数进行;举例如下:

a = slice(2,9,2)    # 2为起点,9为终点,间隔为2
b = np.arange(0,10,1)  # b: [0 1 2 3 4 5 6 7 8 9]
print(b[a])   # 输出:[2 4 6 8]

1.2 使用 [] 切片 (常用,*** 非常重要***)

使用方式与slice相同,上面的例子可以书写为:

b = np.arange(0,10,1)
print(b[2:9:2])    # 输出:[2 4 6 8]

注意:

1.2.1 针对一维数组

  1. 切片时,中括号[]内数字之间的符号为冒号, 参数为:start:stop:step
  2. 若中括号[]内只有一个数字,则返回该索引对应的值;例如:b[2] 则返回 2
  3. 若中括号[][2:],则返回起始位置与后面的所有值;例如:b[2:] 则返回 [2 3 4 5 6 7 8 9]
  4. 若中括号[][2:6],则返回起始位置与终止位置之间的所有值;例如:b[2:6],返回[2 3 4 5]

1.2.2 针对二维数组,与一维数组类似,可以用冒号:代替所有

举例如下:

a = np.array([[1,2,3],[3,4,5],[4,5,6]])  
print (a[:,1])   # 第2列元素,输出:[2 4 5]
print (a[1,:])   # 第2行元素,输出:[3 4 5]
print (a[:,1:])  # 第2列及剩下的所有元素,输出:[[2 3]  [4 5] [5 6]]

二、Numpy的高级索引

2.1 布尔索引 (常用,*** 非常重要***)

在高级索引中,最为有用的便是:布尔索引; 简单来说就是,在切片的中括号内[],使用筛选条件,该条件会返回一个布尔数据作为Mask,将需要的数据选取出来;实际上,我们并不需要知道Numpy是如何选取出来数据的,只要只要如何使用即可;举例如下:

b = np.arange(0,10,1)
print(b[b>5])    # [6 7 8 9]
print(b[(b>5) & (b<8)])   # [6 7]

注意点一:应用多个条件时,可以使用 &, 各个条件需要放在()内;如上例中的:b[(b>5) & (b<8)] 注意点二:布尔索引不一定要对数组中的所有元素,也可以针对某一行或者某一列进行筛选;举例如下:

a = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
print(a[(a[:,0]>2) & (a[:,1]<10)])  
# 输出:[[4 5 6] [7 8 9]]
# (a[:,0]>2) 选择出第一列大于2的所有行;
# (a[:,1]<10) 选择出第二列小于10的所有行,然后取交集得到最后结果;

2.2 花式索引

花式索引(Fancyindexing)是一个NumPy术语,它指的是利用整数数组进行索引。假设我们有一个8×4数组:

a = np.arange(32).reshape(8,4)

image.png

通过花式索引,我们可以进行如下操作:

  1. 选出指定的行,例如选出第1,3,5,7 行: print(a[[1,3,5,7]]), 输出为: 在这里插入图片描述

  2. 也可以传入负数,选出倒数的行,例如选出最后3行: print(a[[-3,-2,-1]]), 输出为: 在这里插入图片描述

  3. 也可以传入多个索引数组,返回对应值的一维数组,例如选出 (2,2), (3,3), (5,3) 三个数: print(a[[2,3,5],[2,3,3]]) , 输出为: 在这里插入图片描述

  4. 选出指定的列,例如选出第0,1, 3列:print(a[:,[1,2,3]]) , 输出为: 在这里插入图片描述

  5. 选出指定的行与指定的列,例如选出第0,2,3列,第2,5,6 行的一个3*3数组; print(a[[2,5,6]][:,[0,2,3]]), 输出为: 在这里插入图片描述

  6. 在5的基础上,还可以通过交换输入的顺序,调整输出的顺序,例如:想要调换2,3列的顺序,同时调换 2,6 行的顺序;print(a[[6,5,2]][:,[0,3,2]]) 在这里插入图片描述

标签:输出,选出,Numpy,索引,np,数组,print,第四节
From: https://blog.51cto.com/u_15807450/5727077

相关文章

  • 视频融合平台EasyCVR出现切片索引越界停止问题,该如何解决?
    EasyCVR视频融合云平台基于云边端一体化架构,兼容性高、拓展性强,可支持多类型设备、多协议方式接入,包括国标GB/T28181、RTMP、RTSP/Onvif协议,以及厂家的私有协议,如:海康Ehome......
  • MongoDB(2): 查询、索引、聚合
    查询find条件操作符1$gt、$lt、$gte、$lte条件操作符2$type:[key]可选的key值如下:1:双精度型(Double)2:字符串(String)3:对象(Object)4:数组(Array)5:......
  • Oracle问题小记五:服务启动-索引-子查询-分页存储过程
    今天,把​​秋色园QBlog​​ 的数据导到Oracle中运行,重拾Oracle,过程的主要问题记录下: 1:服务启动问题这个问题发生多次了,那个毛网管没事又让人改计算名称,Oracle久没开了也......
  • 千万级数据表选错索引导致的线上慢查询事故
     故障描述在7月24日11点线上某数据库突然收到大量告警,慢查询数超标,并且引发了连接数暴增,导致数据库响应缓慢,影响业务。看图表慢查询在高峰达到了每分钟14w次,在平时正常......
  • 索引优化与查询优化
    目录1、数据准备2、索引失效案例2.1全值匹配我最爱2.2最佳左前缀法则2.3主键插入顺序2.4计算、函数、类型转换(自动或手动)导致索引失效2.5类型转换导致索引失效2.6待......
  • MySQL高级 3:索引
    1.思考在图书馆中是如何找到一本书的?在字典中查找一个单词?   一般的应用系统对比数据库的读写比例在10:1左右(即有10次查询操作时有1次写的操作),而且插入操作和更新操......
  • MySQL索引
    什么是索引?索引类似于清华字典上的拼音查找页和部首查找页,通过索引我们能够快速的定位到需要查找的汉字。而索引实际上也是一张表,只不过这张表记录了key以及定位记录的字段......
  • 【Numpy总结】第二节:Numpy 的属性与形状变换
    一、最基本的属性在NumPy中,每一个线性的数组称为是一个轴(axis),也就是维度(dimensions),维度的数量称为秩(rank);比如说,二维数组相当于是两个一维数组,即二维数组有两个轴,秩为2。......
  • 科学计算库NumPy
    科学计算库NumPy目录科学计算库NumPy一.简单介绍二.认识NumPy数组对象三.创建NumPy数组四.ndarray对象的数据类型1.查看数据类型2.转换数据类型五.数组运算1.矢量......
  • Oracle 12C R2-新特性---增强索引压缩
    高级索引压缩可以很好的应用于所有支持的索引。使用高级索引压缩创建索引可以减少所有唯一和非唯一索引的大小,并显着提高压缩率,占用更少的空间,同时仍然可以有效地访问索引。......