上节课我们一起学习了Numpy的基本功能和它的部分基础知识。今天我们一起接着来学习剩下的部分。

5.一维数组的索引和切片

(1)一维数组的切片操作与Python列表的切片操作很相似。例如,我们可以用下标3~7来选取元素3~6:

a = np.arange(9)a[3:7]

(2)也可以用下标0~7,以2为步长选取元素:

a[:7:2]

利用负数下标翻转数组:

a[::-1]

6.多维数组的切片和索引

(1)先用arange函数创建一个数组并改变其维度,使之变成一个三维数组,2×3×4的三维数组:可以形象地把它看做一个两层楼建筑,每层楼有12个房间,并排列成3行4列。

b = arange(24).reshape(2,3,4)b.shape

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

b[0,0,0]

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

b[:,0,0]

(4)选取第1层楼的所有房间:

b[0, :, :]

(5)多个冒号可以用一个省略号(...)来代替,因此上面的代码等价于:

b[0, ...]

(6)选取第1层楼、第2排的所有房间:

b[0,1]

(7)再进一步,我们可以在上面的数组切片中间隔地选定元素:

b[0,1,::2]

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

b[...,1]

(9)类似地,我们可以选取所有位于第2行的房间,而不指定楼层和列号:

b[:,1]

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

b[0,:,1]

(11)如果要选取第1层楼的最后一列的所有房间,使用如下代码:

b[0,:,-1]

(12)如果要反向选取第1层楼的最后一列的所有房间,使用如下代码:

b[0,::-1, -1]

(13)在该数组切片中间隔地选定元素:

b[0,::2,-1]

(14)如果在多维数组中执行翻转一维数组的命令,将在最前面的维度上翻转元素的顺序,在我们的例子中将把第1层楼和第2层楼的房间交换:

b[::-1]

(15)从数组中抽取元素,np.extract

· 生成选择偶数元素的条件变量:

a = np.arange(7)condition = (a % 2) == 0np.extract(condition, a)

· 使用nonzero函数抽取数组中的非零元素:

np.nonzero(a)

7.改变数组的维度

(1)ravel 我们可以用ravel函数完成展平的操作:

b.ravel()

(2)flatten 这个函数恰如其名,flatten就是展平的意思,与ravel函数的功能相同。

不过,flatten函数会请求分配内存来保存结果,而ravel函数只是返回数组的一个视图(view):

b.flatten()

(3)用元组设置维度: 除了可以使用reshape函数,我们也可以直接用一个正整数元组来设置数组的维度,如下所示:

b.shape = (6,4)

(4)transpose 在线性代数中,转置矩阵是很常见的操作。对于多维数组,我们也可以这样做:

b.transpose()

(5)resize和reshape函数的功能一样,但resize会直接修改所操作的数组:

b.resize((2,12))

8.数组的组合

NumPy数组有水平组合、垂直组合和深度组合等多种组合方式,我们将使用vstack、dstack、hstack、column_stack、row_stack以及concatenate函数来完成数组的组合。

a = arange(9).reshape(3,3)b = 2 * a

(1)水平组合:hstack函数,用concatenate函数来实现同样的效果

hstack((a, b))concatenate((a, b), axis=1)

(2)垂直组合:vstack,将concatenate函数的axis参数设置为0即可实现同样的效果

vstack((a, b))concatenate((a, b), axis = 0)

(3)深度组合:就是将一系列数组沿着纵轴(深度)方向进行层叠组合。举个例子,有若干张二维平面内的图像点阵数据,我们可以将这些图像数据沿纵轴方向层叠在一起,这就形象地解释了什么是深度组合。

dstack((a, b))

(4)列组合 column_stack函数对于一维数组将按列方向进行组合,于二维数组,column_stack与hstack的效果是相同的

np.column_stack((a,b))hstack((a, b))

(5)行组合 当然,NumPy中也有按行方向进行组合的函数,它就是row_stack。对于两个一维数组,将直接层叠起来组合成一个二维数组。对于二维数组,row_stack与vstack的效果是相同的

row_stack((a,b))vstack((a, b))

9.数组的分割

(1)水平分割:下面的代码将把数组沿着水平方向分割为3个相同大小的子数组:

调用split函数并在参数中指定参数axis=1

hsplit(a, 3)split(a, 3, axis=1)

(2)垂直分割:vsplit函数将把数组沿着垂直方向分割:

调用split函数并在参数中指定参数axis=0

vsplit(a, 3)split(a, 3, axis=0)

(3)深度分割 :dsplit函数将按深度方向分割数组。

c = arange(27).reshape(3, 3, 3)dsplit(c, 3)

10.数组的属性

(1)shape和dtype属性以外,ndarray对象还有很多其他的属性

(2)ndim属性,给出数组的维数,或数组轴的个数:

print(b)b.ndim

(3)size属性,给出数组元素的总个数,如下所示:

b.size

(4)itemsize属性,给出数组中的元素在内存中所占的字节数:

b.itemsize

(5)如果你想知道整个数组所占的存储空间,可以用nbytes属性来查看。这个属性的值其实就是itemsize和size属性值的乘积:

b.nbytes

b.size * b.itemsize

(6)T属性的效果和transpose函数一样,对于一维数组,其T属性就是原数组:

b.T

(7)在NumPy中,复数的虚部是用j表示的。例如,我们可以创建一个由复数构成的数组:

b = array([1.j + 1, 2.j + 3])

(8)real属性,给出复数数组的实部

b.real

(9)imag属性,给出复数数组的虚部

b.imag

python hstack_Python学习之Numpy速成记——基础篇(中)相关推荐

  1. FPGA系统性学习笔记连载_Day1数字电路基础篇

    FPGA系统性学习笔记连载_Day1数字电路基础篇 连载<叁芯智能FPGA设计与研发就业班-第一天> <数字电路基础1> 原创作者:紫枫术河 转载请联系群主授权,否则追究责任 ...

  2. 0基础python入门书籍 excel_【曾贤志】从零基础开始用Python处理Excel数据 - 第1季 基础篇...

    =====[曾贤志]从零基础开始用Python处理Excel数据 第1季 基础篇====== 1-1 什么是python? .mp4 1-2 为什么要学习用Python处理Excel表格? .mp4 ...

  3. 强化学习笔记(一)基础篇

    强化学习笔记(一)基础篇 目录 1.强化学习相关概念 2.强化学习与监督学习和非监督学习的区别 3.强化学习分类 4.三对重要概念 目录 写在前面:本文系小编学习邹伟老师等人编著的<强化学习&g ...

  4. HFSS学习笔记(一)基础篇 操作界面简介和使用前的准备工作

    HFSS学习笔记(一)基础篇 操作界面简介和使用前的准备工作 一.HFSS工作界面简介 各区域的功能: 二.设计的步骤 1.创建工程文件 2.进行设计前的准备工作 一.HFSS工作界面简介 各区域的功 ...

  5. python多线程并发_Python进阶记录之基础篇(二十四)

    回顾 在Python进阶记录之基础篇(二十三)中,我们介绍了进程的基本概念以及Python中多进程的基本使用方法.其中,需要重点掌握多进程的创建方法.进程池和进程间的通信.今天我们讲一下Python中 ...

  6. pythonsze_python学习笔记二 数据类型(基础篇)

    Python基础 对于Python,一切事物都是对象,对象基于类创建 不同类型的类可以创造出字符串,数字,列表这样的对象,比如"koka".24.['北京', '上海', '深圳' ...

  7. 【黑马-python】---学习笔记(1)---Linux基础

    Linux基础 1 操作系统(科普) 1.1 科普 1.2 不同应用领域的主流操作系统 1.2.1 桌面操作系统 Windows系列-用户群体大,安全性不好,稳定性不好 masOS-适合于开发人员 L ...

  8. python速成班1个月_Python速成班-基础篇DAY03

    前面两节课我们简单介绍了python的相关背景,也介绍了python3以及其编译软件的下载安装.接下来,我们介绍一下pycharm的相关配置,在进行课程前先把准备工作完成.以及简单的打印输出(prin ...

  9. 【Python 数据科学】Numpy和Pandas基础

    文章目录 一.Numpy基础简介 1.基础 2. 数组的加减乘除.切片与列表相同 二.Pandas 基础 1.series 1)基础 2)切片 2.dataframe 1).构造 2).切片 取行 取 ...

最新文章

  1. 现在使用计算机的工作原理是,计算机的工作原理是什么
  2. antd 文本域超长问题_「自然语言处理(NLP)」阿里团队--文本匹配模型(含源码)...
  3. mysql ondumplictcate_4.5万字手把手教你实现MySQL TB级数据存储!!
  4. BugkuCTF-MISC题啊哒,白哥的鸽子
  5. numpy产生一个大于0的随机数_Numpy中常用随机函数的总结
  6. python数据结构与算法13_python3数据结构与算法
  7. 语义分割和实例分割_2019 语义分割指南
  8. SQL中JOIN操作后接ON和WHERE关键字的区别
  9. JavaScript基础知识指南-思维导图
  10. 让Apache日志不记录图片等指定扩展名文件的设置方法
  11. xp java环境_XP系统怎么安装JAVA编程环境
  12. 中山大学delphi视频下载(51讲)
  13. .net的commandname领悟
  14. QTreeView的使用(四)
  15. Docker和Pycharm
  16. 日志报错:WARNING: An illegal reflective access operation has occurred
  17. oracle 锁表是为什么,怎么解决
  18. 应用程序正常初始化(0xc00000005)失败.请单击“单击”,终止应用程序
  19. 【08月01日】A股滚动市净率PB历史新低排名
  20. 输入一个整数将其倒着输出,如54321——12345。

热门文章

  1. 孙立岩 python-basic: 用于学习python基础的课件(十一 十二)
  2. 生命科学领域颠覆性技术——基因测序
  3. Numpy与Pandas基础
  4. Efficient Hybrid De Novo Error Correction and Assembly for Long Reads
  5. 从RNA-seq结果到差异表达
  6. 嵌入式linux设计报告,嵌入式linux课程设计报告
  7. mysql 备份压缩数据库_备份压缩mysql 数据库
  8. jupyter notebook 插入图片
  9. python 播放 wav 文件
  10. 【文本分类】深入理解embedding层的模型、结构与文本表示