Numpy 改变数组维度的几种方法小结


Posted in Python onAugust 02, 2018

来自 《Python数据分析基础教程:Numpy 学习指南(第2版)》

Numpy改变数组维度的方法有:

reshape()
ravel()
flatten()

用元组设置维度

transpose()
resize()

下面将依次进行说明

0. 首先,创建一个多维数组

from numpy import * 
a = arange(24)

得到:

[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]

1.reshape 函数

b = a.reshape(2,3,4)
print(b)

得到一个 2*3*4 维的数组:

[[[ 0 1 2 3]
 [ 4 5 6 7]
 [ 8 9 10 11]]
 
 [[12 13 14 15]
 [16 17 18 19]
 [20 21 22 23]]]

可以想象成2层小洋楼,每层有 3*4 个房间

2.ravel函数 可以将多维数组展平(也就是变回一维)

c = b.ravel()
print(c)

得到一维数组

[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]

3.flatten函数 也是将多维数组展平,与ravel函数的功能相同,不过flatten函数会请求分配内存来保存结果,而ravel函数只是返回数组的一个视图(view)

c = b.flatten()
print(c)

得到一维数组

[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]

4.用元组设置维度

直接用一个正整数元组来设置数组的维度

b.shape = (6,4)
print(b)

这种做法将直接改变所操作的数组,现在数组b变成了一个 6*4 的多维数组

[[ 0 1 2 3]
 [ 4 5 6 7]
 [ 8 9 10 11]
 [12 13 14 15]
 [16 17 18 19]
 [20 21 22 23]]

5.transpose函数 将矩阵进行转置

d = b.transpose()
print(d)

得到 4*6 的多维数组

[[ 0 4 8 12 16 20]
 [ 1 5 9 13 17 21]
 [ 2 6 10 14 18 22]
 [ 3 7 11 15 19 23]]

6.resize函数 和reshape函数的功能一样,但resize会直接修改所操作的数组

b.resize((2,12))
print(b)

得到 2*12 的两维数组

[[ 0 1 2 3 4 5 6 7 8 9 10 11]
 [12 13 14 15 16 17 18 19 20 21 22 23]]

并且这一步不可以通过赋值来实现,如下所示:

e = b.resize((2,12))
print(e)

此时结果为:

None

以上这篇Numpy 改变数组维度的几种方法小结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 爬虫出现403禁止访问错误详解
Mar 11 Python
Python实现抓取网页生成Excel文件的方法示例
Aug 05 Python
python实现ID3决策树算法
Dec 20 Python
Python用 KNN 进行验证码识别的实现方法
Feb 06 Python
使用Python对微信好友进行数据分析
Jun 27 Python
Python 实现子类获取父类的类成员方法
Jan 11 Python
Python中文件的写入读取以及附加文字方法
Jan 23 Python
python命令行参数用法实例分析
Jun 25 Python
Python使用百度api做人脸对比的方法
Aug 28 Python
Pytorch中膨胀卷积的用法详解
Jan 07 Python
python 两个一样的字符串用==结果为false问题的解决
Mar 12 Python
Python办公自动化之教你如何用Python将任意文件转为PDF格式
Jun 28 Python
python 字典中取值的两种方法小结
Aug 02 #Python
python 剪切移动文件的实现代码
Aug 02 #Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
Aug 02 #Python
Python实现两个list求交集,并集,差集的方法示例
Aug 02 #Python
python爬虫框架scrapy实现模拟登录操作示例
Aug 02 #Python
python爬虫之线程池和进程池功能与用法详解
Aug 02 #Python
Python列表推导式与生成器用法分析
Aug 02 #Python
You might like
php,ajax实现分页
2008/03/27 PHP
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
PHP得到mssql的存储过程的输出参数功能实现
2012/11/23 PHP
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
thinkPHP5使用Rabc实现权限管理
2019/08/28 PHP
js监听输入框值的即时变化onpropertychange、oninput
2011/07/13 Javascript
JQuery扩展插件Validate 3通过参数设置错误信息
2011/09/05 Javascript
jQuery 拖动层(在可视区域范围内)
2012/05/24 Javascript
12款经典的白富美型—jquery图片轮播插件—前端开发必备
2013/01/08 Javascript
jquery实现点击TreeView文本父节点展开/折叠子节点
2013/01/10 Javascript
图片img的src不变让浏览器重新加载实现方法
2013/03/29 Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
2015/03/04 Javascript
使用JavaScript刷新网页的方法
2015/06/04 Javascript
javascript学习笔记_浅谈基础语法,类型,变量
2016/09/19 Javascript
KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定
2016/10/10 Javascript
浅析js的模块化编写 require.js
2016/12/07 Javascript
详解vue2.0 transition 多个元素嵌套使用过渡
2017/06/19 Javascript
利用JavaScript如何查询某个值是否数组内
2017/07/30 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
微信小程序引用iconfont图标的方法
2018/10/22 Javascript
详解jQuery设置内容和属性
2019/04/11 jQuery
vue实现绑定事件的方法实例代码详解
2019/06/20 Javascript
[36:17]DOTA2上海特级锦标赛 - VGL音乐会全集
2016/03/06 DOTA
python判断一个集合是否包含了另外一个集合中所有项的方法
2015/06/30 Python
在IPython中执行Python程序文件的示例
2018/11/01 Python
Python标准库json模块和pickle模块使用详解
2020/03/10 Python
关于Python turtle库使用时坐标的确定方法
2020/03/19 Python
python 实现一个简单的线性回归案例
2020/12/17 Python
仿酷狗html5手机音乐播放器主要部分代码
2013/05/15 HTML / CSS
党课学习思想汇报
2014/01/02 职场文书
读书之星事迹材料
2014/05/12 职场文书
希特勒的演讲稿
2014/05/23 职场文书
校园文明标语
2014/06/13 职场文书
2014年教师党员自我评议
2014/09/19 职场文书
物业管理委托协议(2篇)
2014/09/23 职场文书