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对象体系深入分析
Oct 28 Python
python通过ssh-powershell监控windows的方法
Jun 02 Python
举例讲解Django中数据模型访问外键值的方法
Jul 21 Python
Python 实现随机数详解及实例代码
Apr 15 Python
apache部署python程序出现503错误的解决方法
Jul 24 Python
python中Apriori算法实现讲解
Dec 10 Python
Django REST framework视图的用法
Jan 16 Python
关于python3中setup.py小概念解析
Aug 22 Python
利用python实现PSO算法优化二元函数
Nov 13 Python
Django后端发送小程序微信模板消息示例(服务通知)
Dec 17 Python
Python 使用 PyQt5 开发的关机小工具分享
Jul 16 Python
Python常用断言函数实例汇总
Nov 30 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
Ajax PHP 边学边练 之三 数据库
2009/11/26 PHP
php 智能404跳转代码,适合换域名没改变目录的网站
2010/06/04 PHP
PHP运行模式的深入理解
2013/06/03 PHP
解析在PHP中使用全局变量的几种方法
2013/06/24 PHP
yii实现图片上传及缩略图生成的方法
2014/12/04 PHP
Prototype1.5 rc2版指南最后一篇之Position
2007/01/10 Javascript
JS操作Cookies包括(读取添加与删除)
2012/12/26 Javascript
datagrid框架的删除添加与修改
2013/04/08 Javascript
Jquery的hover方法让鼠标经过li时背景变色
2013/09/06 Javascript
jquery遍历select元素(实例讲解)
2013/12/31 Javascript
jQuery+ajax实现动态执行脚本的方法
2015/01/27 Javascript
JavaScript中的原型prototype属性使用详解
2015/06/05 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
2015/07/09 Javascript
js图片翻书效果代码分享
2015/08/20 Javascript
js+html5实现的自由落体运动效果代码
2016/01/28 Javascript
jquery对象访问是什么及使用方法介绍
2016/05/03 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
React-router 4 按需加载的实现方式及原理详解
2017/05/25 Javascript
JS处理数据四舍五入(tofixed与round的区别详解)
2017/10/26 Javascript
vuex操作state对象的实例代码
2018/04/25 Javascript
webpack项目轻松混用css module的方法
2018/06/12 Javascript
微信公众号开发之微信支付代码记录的实现
2019/10/16 Javascript
javascript实现多边形碰撞检测
2020/10/24 Javascript
在Python 3中实现类型检查器的简单方法
2015/07/03 Python
python 高效去重复 支持GB级别大文件的示例代码
2018/11/08 Python
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
2019/05/15 Python
matplotlib基础绘图命令之bar的使用方法
2020/08/13 Python
Python lambda表达式原理及用法解析
2020/08/18 Python
使用before和:after伪类制作css3圆形按钮
2014/04/08 HTML / CSS
娇韵诗香港官网:Clarins香港
2020/08/13 全球购物
Belvilla法国:休闲度假房屋出租
2020/10/03 全球购物
C#笔试题和英文面试题
2013/02/07 面试题
大学学习个人的自我评价
2014/02/18 职场文书
计算机毕业生自荐信
2014/06/12 职场文书
街道党工委党的群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
Python+tkinter实现高清图片保存
2022/03/13 Python