ndarray支持在多维数组上的切片操作。为了方便起见,我们可以用一个省略号(...)来

表示遍历剩下的维度。

(1)举例来说,我们先用arange函数创建一个数组并改变其维度,使之变成一个三维数组:>>>b=np.arange(24).reshape(2,3,4)

>>> b.shape

(2L, 3L, 4L)

>>> b

array([[[ 0, 1, 2, 3],

[ 4, 5, 6, 7],

[ 8, 9, 10, 11]],

[[12, 13, 14, 15],

[16, 17, 18, 19],

[20, 21, 22, 23]]])

多维数组b中有0~23的整数,共24个元素,是一个2×3×4的三维数组。我们可以形象地把它看做一个两层楼建筑,每层楼有12个房间,并排列成3行4列。或者,我们也可以将其看成是电子表格中工作表(sheet)、行和列的关系。你可能已经猜到,reshape函数的作用是改变数组的“形状”,也就是改变数组的维度,其参数为一个正整数元组,分别指定数组在每个维度上的大小。如果指定的维度和数组的元素数目不相吻合,函数将抛出异常。

(2)我们可以用三维坐标来选定任意一个房间,即楼层、行号和列号。例如,选定第1层楼、第1行、第1列的房间(也可以说是第0层楼、第0行、第0列,这只是习惯问题),可以这样表示:>>>b[0,0,0]

0

(3)如果我们不关心楼层,也就是说要选取所有楼层的第1行、第1列的房间,那么可以将第1个下标用英文标点的冒号:来代替:>>>b[:,0,0]

array([0, 12])

>>>b[0]

array([[0, 1, 2, 3],

[ 4, 5, 6, 7],

[ 8, 9, 10, 11]])

我们还可以这样写,选取第1层楼的所有房间:>>>b[0,:,:]

array([[0, 1, 2, 3],

[ 4, 5, 6, 7],

[ 8, 9, 10, 11]])

多个冒号可以用一个省略号(...)来代替,因此上面的代码等价于:>>>b[0,...]array([[0, 1, 2, 3],

[ 4, 5, 6, 7],

[ 8, 9, 10, 11]])

进而可以选取第1层楼、第2排的所有房间:>>>b[0,1]

array([4,5, 6, 7])

(4) 再进一步,我们可以在上面的数组切片中间隔地选定元素:>>>b[0,1,::2]

array([4,6])

(5) 如果要选取所有楼层的位于第2列的房间,即不指定楼层和行号,用如下代码即可:>>>b[...,1]

array([[1, 5, 9],

[13, 17, 21]])

类似地,我们可以选取所有位于第2行的房间,而不指定楼层和列号:>>>b[:,1]

array([[4, 5, 6, 7],

[16, 17, 18, 19]])

如果要选取第1层楼的所有位于第2列的房间,在对应的两个维度上指定即可:>>>b[0,:,1]

array([1,5, 9])

(6)如果要选取第1层楼的最后一列的所有房间,使用如下代码:>>>b[0,:,-1]

array([3, 7, 11])

如果要反向选取第1层楼的最后一列的所有房间,使用如下代码:>>>b[0,::-1,-1]

array([11, 7, 3])

在该数组切片中间隔地选定元素:>>>b[0,::2,-1]

array([3, 11])

如果在多维数组中执行翻转一维数组的命令,将在最前面的维度上翻转元素的顺序,在我们

的例子中将把第1层楼和第2层楼的房间交换:>>>b[::-1]

array([[[12,13, 14, 15],

[16, 17, 18, 19],

[20, 21, 22, 23]],

[[ 0, 1, 2, 3],

[ 4, 5, 6, 7],

[ 8, 9, 10, 11]]])

刚才做了些什么

我们用各种方法对一个NumPy多维数组进行了切片操作。

python三维数组切片_【NumPy学习指南】day4 多维数组的切片和索引相关推荐

  1. 《Python数据分析基础教程:NumPy学习指南(第2版)》笔记5:第三章 常用函数1——文件读写、算术平均值、最大值最小值、极值

    本章将介绍NumPy的常用函数.具体来说,我们将以分析历史股价为例,介绍怎样从文件中载入数据,以及怎样使用NumPy的基本数学和统计分析函数.这里还将学习读写文件的方法,并尝试函数式编程和NumPy线 ...

  2. 《Python数据分析基础教程:NumPy学习指南(第2版)》笔记4:第二章 NumPy基础3——数组的组合、分割,数组转换为列表

    第二章 NumPy基础3 本章示例代码中的输入和输出均来自IPython会话. 2.7 数组的组合 NumPy数组有水平组合.垂直组合和深度组合等多种组合方式,我们将使用vstack.dstack. ...

  3. 《Python数据分析基础教程:NumPy学习指南(第2版)》笔记8:第三章 常用函数4——线性模型、数组修剪与压缩、阶乘

    本章将介绍NumPy的常用函数.具体来说,我们将以分析历史股价为例,介绍怎样从文件中载入数据,以及怎样使用NumPy的基本数学和统计分析函数.这里还将学习读写文件的方法,并尝试函数式编程和NumPy线 ...

  4. 《Python数据分析基础教程:NumPy学习指南:第二版》读书笔记

    内容 主要介绍了NumPy库中的函数. 组成方式 用非常零散的知识点串联成章节. 内容摘要 极简地展示了章节中所运用的函数. 第一章 arrange函数创建NumPy数组. 第二章 NumPy特性 在 ...

  5. 《Python数据分析基础教程:NumPy学习指南(第2版)》笔记6:第三章 常用函数2——中位数、方差、日期、展平

    本章将介绍NumPy的常用函数.具体来说,我们将以分析历史股价为例,介绍怎样从文件中载入数据,以及怎样使用NumPy的基本数学和统计分析函数.这里还将学习读写文件的方法,并尝试函数式编程和NumPy线 ...

  6. 《Python数据分析基础教程:NumPy学习指南(第2版)》笔记1:第一章 NumPy快速入门

    NumPy快速入门 1.1 Python NumPy是基于Python的,因此在安装NumPy之前,需要先安装Python.某些操作系统已经默认安装有Python环境,但仍需检查Python的版本是否 ...

  7. 《Python数据分析基础教程:NumPy学习指南(第2版)》笔记16:第七章 专用函数2——金融函数

    当前Numpy版本为:1.20 第七章 专用函数 7.9 金融函数 NumPy中有很多金融函数. Numpy 1.20之前的版本导入numpy,直接调用以下函数即可. (注意!Numpy 1.20之后 ...

  8. python数据分析基础教程 numpy_Python数据分析基础教程:NumPy学习指南(第2版)

    Python数据分析基础教程:NumPy学习指南(第2版) Ivan Idris (作者) 张驭宇 (译者) NumPy是一个优秀的科学计算库,提供了很多实用的数学函数.强大的多维数组对象和优异的计算 ...

  9. 推荐书|学习Python数据分析值得推荐的《NumPy学习指南》

    <Python数据分析基础教程:NumPy学习指南(第2版)> 1.基本介绍: NumPy是一个优秀的科学计算库,提供了很多实用的数学函数.强大的多维数组对象和优异的计算性能,不仅可以取代 ...

  10. python数据分析numpy_Python数据分析之numpy学习

    Python模块中的numpy,这是一个处理数组的强大模块,而该模块也是其他数据分析模块(如pandas和scipy)的核心. 接下面将从这5个方面来介绍numpy模块的内容: 1)数组的创建 2)有 ...

最新文章

  1. TabLayout 遇到那些坑 tab标签不显示问题
  2. mysql 按小时分组统计_PowerBI业务分析:按排名分组统计
  3. 《Java并发编程入门与高并发面试》or 《Java并发编程与高并发解决方案》笔记
  4. kali下利用weeman进行网页钓鱼
  5. 这些Python好书,助你开发一臂之力
  6. eclipse代码补全
  7. with dlz mysql 条件_Flask Bind-DLZ + Mysql DNS管理平台
  8. 聊一聊基于Nacos的metadata完成服务间的AB测试
  9. 创新的迷思——2019 Microsoft Hackathon 苏州站回顾
  10. RAC(ReactiveCocoa)使用方法(二)
  11. C++字符串完全指南(2) - 各种字符串类- CRT类
  12. VS编辑代码时使用正则表达式去掉行号
  13. 计算机字体库位置,win7电脑的字体库在哪里?
  14. 云主服务器排行榜_国内云服务器排名
  15. iexplore应用程序错误
  16. Apche Kafka 的生与死 – failover 机制详解
  17. 前端学习--Bable的使用步骤
  18. AD绘制PCB板框+定位孔(Altium Designer)
  19. HttpClient 实现酷狗 Top500 音乐下载
  20. Linux C 函数参考(日期时间)

热门文章

  1. java基本数据类型转为String类型的4种常见方法
  2. java servlet是单例吗_关于java:为什么apache servlet是单例?
  3. python内置函数面向对象_Pyhton——面向对象进阶二:类的内置函数补充、描述符...
  4. 电力系统继电保护第二版张保会_电力系统继电保护试题
  5. 兄弟3150cdn更换硒鼓_耗材知多点:一体式硒鼓及分离式硒鼓
  6. c语言第六次实验报告,第一年C语言实验报告6列
  7. mysql n 识别_mysql – 不能有“不识别”的N:M关系吗?
  8. (二分)Trailing Zeroes (III)
  9. java的一些题目,一些Java题目
  10. php 制作ppt,PPT制作三个基本要素是什么?