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 Socket编程入门教程
Jul 11 Python
在mac下查找python包存放路径site-packages的实现方法
Nov 06 Python
Python中的异常处理try/except/finally/raise用法分析
Feb 28 Python
python实现关闭第三方窗口的方法
Jun 28 Python
python连接PostgreSQL数据库的过程详解
Sep 18 Python
根据tensor的名字获取变量的值方式
Jan 04 Python
TensorFlow2.0矩阵与向量的加减乘实例
Feb 07 Python
文件上传服务器-jupyter 中python解压及压缩方式
Apr 22 Python
Python基于jieba, wordcloud库生成中文词云
May 13 Python
python小白切忌乱用表达式
May 29 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
Nov 17 Python
python中如何对多变量连续赋值
Jun 03 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详细彻底学习Smarty
2008/03/27 PHP
thinkphp3.0输出重复两次的解决方法
2014/12/19 PHP
php使用指定字符列表生成随机字符串的方法
2015/04/18 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
2017/01/21 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
2020/06/06 PHP
javascript 选择文件夹对话框(web)
2009/07/07 Javascript
网站导致浏览器崩溃的原因总结(多款浏览器) 推荐
2010/04/15 Javascript
js数值和和字符串进行转换时可以对不同进制进行操作
2014/03/05 Javascript
jQuery使用元素属性attr赋值详解
2015/02/27 Javascript
在Mac OS下使用Node.js的简单教程
2015/06/24 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
老生常谈angularjs中的$state.go
2017/04/24 Javascript
Node.js学习之TCP/IP数据通讯(实例讲解)
2017/10/11 Javascript
angularjs数组判断是否含有某个元素的实例
2018/02/27 Javascript
JS判断用户用的哪个浏览器实例详解
2018/10/09 Javascript
require.js 加载过程与使用方法介绍
2018/10/30 Javascript
[43:18]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
2016/05/27 Python
通过实例解析Python调用json模块
2019/12/11 Python
python实现文法左递归的消除方法
2020/05/22 Python
python 下载文件的几种方法汇总
2021/01/06 Python
html5中valid、invalid、required的定义
2014/02/21 HTML / CSS
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
如何开发安全的AJAX应用
2014/03/26 面试题
写好自荐信要注意的问题
2013/11/10 职场文书
王老吉广告词
2014/03/20 职场文书
工地例会施工汇报材料
2014/08/22 职场文书
关于对大人不礼貌的检讨书
2014/09/29 职场文书
交通事故赔偿协议书怎么写
2014/10/04 职场文书
综治目标管理责任书
2015/05/11 职场文书
雨雪天气温馨提示
2015/07/15 职场文书
仓库管理制度范本
2015/08/04 职场文书
闭幕词的写作格式与范文!
2019/06/24 职场文书
golang 在windows中设置环境变量的操作
2021/04/29 Golang
RPM包方式安装Oracle21c的方法详解
2021/08/23 Oracle
JavaScript文档对象模型DOM
2021/11/20 Javascript