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 03 Python
详解Python的Django框架中的模版继承
Jul 16 Python
Python数据库的连接实现方法与注意事项
Feb 27 Python
Python简单实现自动删除目录下空文件夹的方法
Aug 29 Python
Python 文件操作的详解及实例
Sep 18 Python
python的socket编程入门
Jan 29 Python
Python后台管理员管理前台会员信息的讲解
Jan 28 Python
通过Python编写一个简单登录功能过程解析
Sep 04 Python
python 实现分组求和与分组累加求和代码
May 18 Python
python中round函数如何使用
Jun 19 Python
Django crontab定时任务模块操作方法解析
Sep 10 Python
python文件与路径操作神器 pathlib
Apr 01 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提取中文首字母
2008/04/09 PHP
PHP中批量生成静态html(命令行下运行PHP)
2014/04/19 PHP
php中实现精确设置session过期时间的方法
2014/07/17 PHP
硬盘浏览程序,保存成网页格式便可使用
2006/12/03 Javascript
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
js动态修改input输入框的type属性(实现方法解析)
2013/11/13 Javascript
动态创建script标签实现跨域资源访问的方法介绍
2014/02/28 Javascript
js的image onload事件使用遇到的问题
2014/07/15 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
如何使用Bootstrap 按钮实例详解
2017/03/29 Javascript
JavaScript实现form表单的多文件上传
2020/03/27 Javascript
关于vue单文件中引用路径的处理方法
2018/01/08 Javascript
Vue.js中使用Vuex实现组件数据共享案例
2020/07/31 Javascript
Element-ui upload上传文件限制的解决方法
2021/01/22 Javascript
Python微信公众号开发平台
2018/01/25 Python
Python numpy 点数组去重的实例
2018/04/18 Python
如何爬取通过ajax加载数据的网站
2019/08/15 Python
Python Numpy库常见用法入门教程
2020/01/16 Python
解决python虚拟环境切换无效的问题
2020/04/30 Python
python中添加模块导入路径的方法
2021/02/03 Python
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
2021/03/14 PHP
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
计算机专业自荐信
2013/10/14 职场文书
数控技术专科生自我评价
2014/01/08 职场文书
高中体育教学反思
2014/01/24 职场文书
元旦促销方案
2014/03/15 职场文书
2014领导干部四风问题查摆思想汇报
2014/09/13 职场文书
教师学期末个人总结
2015/02/13 职场文书
书法社团活动总结
2015/05/07 职场文书
阿凡达观后感
2015/06/10 职场文书
胡桃夹子观后感
2015/06/11 职场文书
班主任班级管理心得体会
2016/01/07 职场文书
成功的商业计划书这样写才最靠谱
2019/07/12 职场文书
关于考试抄袭的检讨书
2019/11/02 职场文书
pytorch显存一直变大的解决方案
2021/04/08 Python
CSS中calc(100%-100px)不加空格不生效
2023/05/07 HTML / CSS