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 自动补全(vim)
Nov 30 Python
Python装饰器入门学习教程(九步学习)
Jan 28 Python
python中matplotlib的颜色及线条控制的示例
Mar 16 Python
python MNIST手写识别数据调用API的方法
Aug 08 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
Dec 18 Python
python实现K近邻回归,采用等权重和不等权重的方法
Jan 23 Python
Python3分析处理声音数据的例子
Aug 27 Python
Python 音频生成器的实现示例
Dec 24 Python
Python通过正则库爬取淘宝商品信息代码实例
Mar 02 Python
Django查询优化及ajax编码格式原理解析
Mar 25 Python
Python flask框架实现查询数据库并显示数据
Jun 04 Python
python 5个实用的技巧
Sep 27 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中使用Akismet防止垃圾评论的代码
2011/06/10 PHP
PHP QRCODE生成彩色二维码的方法
2016/05/19 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
PHP生成随机密码4种方法及性能对比
2020/12/11 PHP
javascript globalStorage类代码
2009/06/04 Javascript
js 获取服务器控件值的代码
2010/03/05 Javascript
JSChart轻量级图形报表工具(内置函数中文参考)
2010/10/11 Javascript
js实现瀑布流的一种简单方法实例分享
2013/11/04 Javascript
常用javascript表单验证汇总
2020/07/20 Javascript
HTML Table 空白单元格补全的简单实现
2016/10/13 Javascript
详解JavaScript中this的指向问题
2017/01/20 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
深入理解Webpack 中路径的配置
2017/06/17 Javascript
使用vue实现grid-layout功能实例代码
2018/01/05 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
2018/01/23 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
2019/12/02 Javascript
vue 输入电话号码自动按3-4-4分割功能的实现代码
2020/04/30 Javascript
微信小程序使用前置摄像头拍照
2020/10/22 Javascript
Python文件夹与文件的操作实现代码
2014/07/13 Python
python 连接sqlite及简单操作
2017/06/30 Python
python时间日期函数与利用pandas进行时间序列处理详解
2018/03/13 Python
python实现超市扫码仪计费
2018/05/30 Python
Python中pip更新和三方插件安装说明
2018/07/08 Python
Python双向循环链表实现方法分析
2018/07/30 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
Python 运行 shell 获取输出结果的实例
2019/01/07 Python
基于python使用tibco ems代码实例
2019/12/20 Python
Python3使用xlrd、xlwt处理Excel方法数据
2020/02/28 Python
Python如何执行精确的浮点数运算
2020/07/31 Python
Servlet的生命周期
2013/08/25 面试题
英文请假条
2014/04/11 职场文书
分居协议书范本(律师见证版)
2014/11/26 职场文书
大学生村官个人总结
2015/02/15 职场文书
幼儿园心得体会范文
2016/01/21 职场文书
python中pandas.read_csv()函数的深入讲解
2021/03/29 Python
关于golang高并发的实现与注意事项说明
2021/05/08 Golang