numpy 数组维度操作总汇
2017-12-13 16:23
330 查看
numpy中如何改变数组维度呢?
写在前面
resize函数:直接改变原数组维度,无返回值
shape属性:直接改变原数组维度
区别在于:ravel、flatt函数都返回一维数组的一个视图(View)
但是flatten函数还会请求分配内存来保存结果
当transpose()参数为空时,默认参数是维度序号的倒序排列
以三维为例 transpose() 等价于 transpose(2,1,0) 即深度变为行,行变为深度
写在前面
所有的重排原则:
从原数组最深维度开始依次取元素排到转换后数组最深维度处
1、reshape & resize & shape 改变数组维度
reshape函数:不改变原数组维度,有返回值resize函数:直接改变原数组维度,无返回值
shape属性:直接改变原数组维度
>>> import numpy as np >>> a=np.arange(12) >>> a array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) >>> a.reshape(2,6) array([[ 0, 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10, 11]]) >>> a array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) >>> a.reshape(2,3,2) array([[[ 0, 1], [ 2, 3], [ 4, 5]], [[ 6, 7], [ 8, 9], [10, 11]]]) >>> a.resize(2,6) >>> a >>> array([[ 0, 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10, 11]]) >>> a.shape=(2,6) >>> a array([[ 0, 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10, 11]]) >>> a.shape=(2,3,2) >>> a array([[[ 0, 1], [ 2, 3], [ 4, 5]], [[ 6, 7], [ 8, 9], [10, 11]]]) >>>
2、ravel & flatten 将数组变为一维
两个函数都不会改变原数组维度区别在于:ravel、flatt函数都返回一维数组的一个视图(View)
但是flatten函数还会请求分配内存来保存结果
>>> a array([[[ 0, 1], [ 2, 3], [ 4, 5]], [[ 6, 7], [ 8, 9], [10, 11]]]) >>> a.ravel() array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) >>> a array([[[ 0, 1], [ 2, 3], [ 4, 5]], [[ 6, 7], [ 8, 9], [10, 11]]]) >>> a.flatten() array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) >>> a array([[[ 0, 1], [ 2, 3], [ 4, 5]], [[ 6, 7], [ 8, 9], [10, 11]]])
3 transpose & T 矩阵转置
transpose函数与T 属性功能一致:不改变原数组,有转置后的返回值,且一维数组返回值为它本身>>> a array([[ 0, 1], [ 2, 3], [ 4, 5], [ 6, 7], [ 8, 9], [10, 11]]) >>> a.T array([[ 0, 2, 4, 6, 8, 10], [ 1, 3, 5, 7, 9, 11]]) >>> a array([[ 0, 1], [ 2, 3], [ 4, 5], [ 6, 7], [ 8, 9], [10, 11]]) >>> a.transpose() array([[ 0, 2, 4, 6, 8, 10], [ 1, 3, 5, 7, 9, 11]]) >>> a array([[ 0, 1], [ 2, 3], [ 4, 5], [ 6, 7], [ 8, 9], [10, 11]])
4、细说transpose函数
当维度大于等于三维时,transpose函数可以交换维度顺序当transpose()参数为空时,默认参数是维度序号的倒序排列
以三维为例 transpose() 等价于 transpose(2,1,0) 即深度变为行,行变为深度
>>> a array([[[ 0, 1], [ 2, 3], [ 4, 5]], [[ 6, 7], [ 8, 9], [10, 11]]]) #深度变为行,行变为深度 >>> a.transpose() array([[[ 0, 6], [ 2, 8], [ 4, 10]], [[ 1, 7], [ 3, 9], [ 5, 11]]]) >>> a.transpose(2,1,0) array([[[ 0, 6], [ 2, 8], [ 4, 10]], [[ 1, 7], [ 3, 9], [ 5, 11]]]) #列变为行,行变为列 >>> a.transpose(1,0,2) array([[[ 0, 1], [ 6, 7]], [[ 2, 3], [ 8, 9]], [[ 4, 5], [10, 11]]]) #深度变为列,列变为深度 >>> a.transpose(0,2,1) array([[[ 0, 2, 4], [ 1, 3, 5]], [[ 6, 8, 10], [ 7, 9, 11]]])
相关文章推荐
- numpy 数组维度操作总汇
- numpy 数组维度操作汇总
- Python使用numpy模块创建数组操作示例
- Numpy 数组的切片操作
- numpy教程 - 基本数据类型、多维数组ndarray及其切片操作
- javascript数组操作大全,数组方法总汇
- Numpy-数组的基本操作(二)
- Python numpy(ndarray 随机数组 常用操作 线性方程组和矩阵运算)
- Numpy 数组基础操作--索引、组合、分割、复制、遍历、转换、序列化(四)
- NumPy(4)数组数学与基础操作与复制、排序
- 操作 numpy 数组的常用函数
- 【NumPy学习指南】day5 改变数组的维度
- javascript数组操作大全,数组方法总汇
- numpy的array数组操作
- Python Numpy 数组的初始化和基本操作
- numpy数组基本操作
- 学习Python数据分析(2.1)----Numpy数组以及数组的操作
- javascript对数组的常用操作代码 数组方法总汇
- javascript数组操作大全,数组方法总汇
- python numpy操作数组学习笔记(二)数组的分割和组合