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中返回矩阵的行列方法
Apr 04 Python
python随机取list中的元素方法
Apr 08 Python
Numpy 改变数组维度的几种方法小结
Aug 02 Python
python 地图经纬度转换、纠偏的实例代码
Aug 06 Python
python opencv判断图像是否为空的实例
Jan 26 Python
使用Python将Mysql的查询数据导出到文件的方法
Feb 25 Python
浅谈Python中eval的强大与危害
Mar 13 Python
75条笑死人的知乎神回复,用60行代码就爬完了
May 06 Python
pandas.DataFrame的pivot()和unstack()实现行转列
Jul 06 Python
jupyter notebook 多环境conda kernel配置方式
Apr 10 Python
python中的对数log函数表示及用法
Dec 09 Python
Django中template for如何使用方法
Jan 31 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实现将Session写入数据库
2015/07/26 PHP
xml文档转换工具,附图表例子(hta)
2010/11/17 Javascript
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
JavaScript对象学习经验整理
2013/10/12 Javascript
JQuery操作元素的css样式
2015/03/09 Javascript
js图片翻书效果代码分享
2015/08/20 Javascript
js实现鼠标点击文本框自动选中内容的方法
2015/08/20 Javascript
JavaScript高仿支付宝倒计时页面及代码实现
2016/10/21 Javascript
AngularJS实现在ng-Options加上index的解决方法
2016/11/03 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
2016/11/07 Javascript
js面向对象编程总结
2017/02/16 Javascript
纯JS单页面赛车游戏制作代码分享
2017/03/03 Javascript
jquery插件ContextMenu设置右键菜单
2017/03/13 Javascript
Vue.js实现网格列表布局转换方法
2017/08/25 Javascript
使用express获取微信小程序二维码小记
2019/05/21 Javascript
基于layui内置模块(element常用元素的操作)
2019/09/20 Javascript
vue更改数组中的值实例代码详解
2020/02/07 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
2020/04/07 Javascript
JS如何生成动态列表
2020/09/22 Javascript
详解在Python和IPython中使用Docker
2015/04/28 Python
python3+PyQt5实现文档打印功能
2018/04/24 Python
python:print格式化输出到文件的实例
2018/05/14 Python
Django项目开发中cookies和session的常用操作分析
2018/07/03 Python
Random 在 Python 中的使用方法
2018/08/09 Python
基于python实现计算且附带进度条代码实例
2020/03/31 Python
美国女性运动零售品牌:Lady Foot Locker
2017/05/12 全球购物
Nike澳大利亚官网:Nike.com (AU)
2019/06/03 全球购物
请解释在new与override的区别
2012/10/29 面试题
师德学习感言
2014/01/31 职场文书
高中军训感言600字
2014/03/11 职场文书
村长党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
责任书范本大全
2015/05/11 职场文书
学术会议开幕词
2016/03/03 职场文书
Python中的tkinter库简单案例详解
2022/01/22 Python
解决Mysql中的innoDB幻读问题
2022/04/29 MySQL