python hstack_Python学习之Numpy速成记——基础篇(中)
上节课我们一起学习了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速成记——基础篇(中)相关推荐
- FPGA系统性学习笔记连载_Day1数字电路基础篇
FPGA系统性学习笔记连载_Day1数字电路基础篇 连载<叁芯智能FPGA设计与研发就业班-第一天> <数字电路基础1> 原创作者:紫枫术河 转载请联系群主授权,否则追究责任 ...
- 0基础python入门书籍 excel_【曾贤志】从零基础开始用Python处理Excel数据 - 第1季 基础篇...
=====[曾贤志]从零基础开始用Python处理Excel数据 第1季 基础篇====== 1-1 什么是python? .mp4 1-2 为什么要学习用Python处理Excel表格? .mp4 ...
- 强化学习笔记(一)基础篇
强化学习笔记(一)基础篇 目录 1.强化学习相关概念 2.强化学习与监督学习和非监督学习的区别 3.强化学习分类 4.三对重要概念 目录 写在前面:本文系小编学习邹伟老师等人编著的<强化学习&g ...
- HFSS学习笔记(一)基础篇 操作界面简介和使用前的准备工作
HFSS学习笔记(一)基础篇 操作界面简介和使用前的准备工作 一.HFSS工作界面简介 各区域的功能: 二.设计的步骤 1.创建工程文件 2.进行设计前的准备工作 一.HFSS工作界面简介 各区域的功 ...
- python多线程并发_Python进阶记录之基础篇(二十四)
回顾 在Python进阶记录之基础篇(二十三)中,我们介绍了进程的基本概念以及Python中多进程的基本使用方法.其中,需要重点掌握多进程的创建方法.进程池和进程间的通信.今天我们讲一下Python中 ...
- pythonsze_python学习笔记二 数据类型(基础篇)
Python基础 对于Python,一切事物都是对象,对象基于类创建 不同类型的类可以创造出字符串,数字,列表这样的对象,比如"koka".24.['北京', '上海', '深圳' ...
- 【黑马-python】---学习笔记(1)---Linux基础
Linux基础 1 操作系统(科普) 1.1 科普 1.2 不同应用领域的主流操作系统 1.2.1 桌面操作系统 Windows系列-用户群体大,安全性不好,稳定性不好 masOS-适合于开发人员 L ...
- python速成班1个月_Python速成班-基础篇DAY03
前面两节课我们简单介绍了python的相关背景,也介绍了python3以及其编译软件的下载安装.接下来,我们介绍一下pycharm的相关配置,在进行课程前先把准备工作完成.以及简单的打印输出(prin ...
- 【Python 数据科学】Numpy和Pandas基础
文章目录 一.Numpy基础简介 1.基础 2. 数组的加减乘除.切片与列表相同 二.Pandas 基础 1.series 1)基础 2)切片 2.dataframe 1).构造 2).切片 取行 取 ...
最新文章
- 现在使用计算机的工作原理是,计算机的工作原理是什么
- antd 文本域超长问题_「自然语言处理(NLP)」阿里团队--文本匹配模型(含源码)...
- mysql ondumplictcate_4.5万字手把手教你实现MySQL TB级数据存储!!
- BugkuCTF-MISC题啊哒,白哥的鸽子
- numpy产生一个大于0的随机数_Numpy中常用随机函数的总结
- python数据结构与算法13_python3数据结构与算法
- 语义分割和实例分割_2019 语义分割指南
- SQL中JOIN操作后接ON和WHERE关键字的区别
- JavaScript基础知识指南-思维导图
- 让Apache日志不记录图片等指定扩展名文件的设置方法
- xp java环境_XP系统怎么安装JAVA编程环境
- 中山大学delphi视频下载(51讲)
- .net的commandname领悟
- QTreeView的使用(四)
- Docker和Pycharm
- 日志报错:WARNING: An illegal reflective access operation has occurred
- oracle 锁表是为什么,怎么解决
- 应用程序正常初始化(0xc00000005)失败.请单击“单击”,终止应用程序
- 【08月01日】A股滚动市净率PB历史新低排名
- 输入一个整数将其倒着输出,如54321——12345。
热门文章
- 孙立岩 python-basic: 用于学习python基础的课件(十一 十二)
- 生命科学领域颠覆性技术——基因测序
- Numpy与Pandas基础
- Efficient Hybrid De Novo Error Correction and Assembly for Long Reads
- 从RNA-seq结果到差异表达
- 嵌入式linux设计报告,嵌入式linux课程设计报告
- mysql 备份压缩数据库_备份压缩mysql 数据库
- jupyter notebook 插入图片
- python 播放 wav 文件
- 【文本分类】深入理解embedding层的模型、结构与文本表示