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进行稳定可靠的文件操作详解
Dec 31 Python
解决PyCharm中光标变粗的问题
Aug 05 Python
python抓取网站的图片并下载到本地的方法
May 22 Python
详解Python安装scrapy的正确姿势
Jun 26 Python
在python中bool函数的取值方法
Nov 01 Python
pytz格式化北京时间多出6分钟问题的解决方法
Jun 21 Python
python and or用法详解
Jun 26 Python
Python求平面内点到直线距离的实现
Jan 19 Python
Python argparse模块使用方法解析
Feb 20 Python
Python面向对象实现方法总结
Aug 12 Python
Django缓存Cache使用详解
Nov 30 Python
一些让Python代码简洁的实用技巧总结
Aug 23 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 强制性文件下载功能的函数代码(任意文件格式)
2010/05/26 PHP
解析Linux下Varnish缓存的配置优化
2013/06/20 PHP
邮箱正则表达式实现代码(针对php)
2013/06/21 PHP
浅析PHP中的UNICODE 编码与解码
2013/06/29 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
php实现表单提交上传文件功能
2018/05/28 PHP
Javascript 类、命名空间、代码组织代码
2011/07/31 Javascript
基于jQuery的图片左右无缝滚动插件
2012/05/23 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
使用JSON.parse将json字符串转换成json对象的时候会出错
2014/09/04 Javascript
jQuery制作可自定义大小的拼图游戏
2015/03/30 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
Bootstrap媒体对象学习使用
2017/03/07 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
基于JavaScript 性能优化技巧心得(分享)
2017/12/11 Javascript
Vue2.0 slot分发内容与props验证的方法
2017/12/12 Javascript
vue实现pdf导出解决生成canvas模糊等问题(推荐)
2018/10/18 Javascript
JavaScript变量提升和严格模式实例分析
2019/01/27 Javascript
vue前端框架—Mint UI详解(更适用于移动端)
2019/04/30 Javascript
[00:32]10月24、25日 辉夜杯外卡赛附加赛开赛!
2015/10/23 DOTA
Python获取当前函数名称方法实例分享
2018/01/18 Python
python之拟合的实现
2019/07/19 Python
Python 3.8 新功能大揭秘【新手必学】
2020/02/05 Python
python 将列表里的字典元素合并为一个字典实例
2020/09/01 Python
CSS3 transform的skew属性值图文详解
2014/07/21 HTML / CSS
领导走群众路线整改措施思想汇报
2014/10/12 职场文书
大学生操行评语大全
2014/12/31 职场文书
志愿者个人总结
2015/03/03 职场文书
2015年教师师德师风承诺书
2015/04/28 职场文书
酒桌上的开场白
2015/06/01 职场文书
患者身份识别制度
2015/08/06 职场文书
中学校园广播稿
2015/08/18 职场文书
修改并编译golang源码的操作步骤
2021/07/25 Golang
Docker容器harbor私有仓库部署和管理
2022/08/05 Servers