numpy.transpose对三维数组的转置方法

如下所示:

import numpy as np 

三维数组

arr1 = np.arange(16).reshape((2, 2, 4))
#[[[ 0 1 2 3]
# [ 4 5 6 7]] 

# [[ 8 9 10 11]
# [12 13 14 15]]] 

arr2=arr1.transpose((1,0,2))
#[[[ 0 1 2 3]
# [ 8 9 10 11]]
#
# [[ 4 5 6 7]
# [12 13 14 15]]] 

正序为(0,1,2),数组为

#[[[ 0 1 2 3]
# [ 4 5 6 7]] 

# [[ 8 9 10 11]
# [12 13 14 15]]] 

为什么进过tanspose(1,0,2),数组变为

#[[[ 0 1 2 3]
# [ 8 9 10 11]]
#
# [[ 4 5 6 7]
# [12 13 14 15]]] 

仔细观察之后,可以看到转置后的数组和转置前的数组的区别就是第一页的第二行和第二页的第一行对换了,可是为什么?

当我用arr1[0,1,0],索引值为4

当我用arr2[1,0,0],索引值为4

对比索引参数表的变化和正序和转置序的不同似乎存在某种联系

对于arr1数组,索引参数表[0,0,x]可以表示第一页的第一行,当前两个参数对换之后,同一个元素的索引参数表并没有变化

故arr2的第一页第一行和arr1的第一页第一行相同

对于arr1数组,索引参数表[0,1,x]可以表示第一页第二行,当前两个参数对换之后,同一个元素的索引值比如[0,1,0]变为[1,0,0],

这就是解释了索引值4的索引参数表的不同

大概就是这个思路所以transpose(1,0,2),数组的第一页第二行和第二页第一行对换

后面的四种转置方式也大致是这个思路,仔细观察一下,理解起来应该不难

arr3=arr1.transpose((0,2,1)) 

# [[[ 0 4]
# [ 1 5]
# [ 2 6]
# [ 3 7]]
#
# [[ 8 12]
# [ 9 13]
# [10 14]
# [11 15]]] 

arr4=arr1.transpose((2,0,1))
#[[[ 0 4]
# [ 8 12]]
#
# [[ 1 5]
# [ 9 13]]
#
# [[ 2 6]
# [10 14]]
#
# [[ 3 7]
# [11 15]]] 

这里要注意的是,arr4数组变成4页,这是因为页码和行码对换之后,

页码从数量2,变成了4

而行码从数量4,变成了2

arr5=arr1.transpose((2,1,0))
#[[[ 0 8]
# [ 4 12]]
#
# [[ 1 9]
# [ 5 13]]
#
# [[ 2 10]
# [ 6 14]]
#
# [[ 3 11]
# [ 7 15]]] 

arr6=arr1.transpose((1,2,0))
#[[[ 0 8]
# [ 1 9]
# [ 2 10]
# [ 3 11]]
#
# [[ 4 12]
# [ 5 13]
# [ 6 14]
# [ 7 15]]] 

另外,转置(2,0,1)可以看成,先转置(0,2,1)再转置(1,0,2)

转置(2,1,0)可以看成,先转置(1,0,2),然后转置(0,2,1),最后转置(1,0,2)

转置(1,2,0)可以看成,先转置(1,0,2),在转置(0,2,1)

代码可以写成

arr4=arr1.transpose(0,2,1).transpose(1,0,2) 
#[[[ 0 4]
# [ 8 12]]
#
# [[ 1 5]
# [ 9 13]]
#
# [[ 2 6]
# [10 14]]
#
# [[ 3 7]
# [11 15]]]

结果一样!

以上这篇numpy.transpose对三维数组的转置方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

您可能感兴趣的文章:

  • Numpy中转置transpose、T和swapaxes的实例讲解
  • Python实现矩阵转置的方法分析
  • numpy中的高维数组转置实例
  • 对python 矩阵转置transpose的实例讲解
(0)

相关推荐

  • numpy中的高维数组转置实例

    numpy中的ndarray很适合数组运算 transpose是用来转置的一个函数,很容易让人困惑,其实它是对矩阵索引顺序的一次调整.原先矩阵是一个三维矩阵,索引顺序是x,y,z,角标分别是0.1.2,经过上图(1,0,2)调整后就成了y,x,z. 理解了这些,那么swapaxes方法也就不难理解了 以上这篇numpy中的高维数组转置实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们. 您可能感兴趣的文章: Numpy中转置transpose.T和swapaxes的

  • Python实现矩阵转置的方法分析

    本文实例讲述了Python实现矩阵转置的方法.分享给大家供大家参考,具体如下: 前几天群里有同学提出了一个问题:手头现在有个列表,列表里面两个元素,比如[1, 2],之后不断的添加新的列表,往原来相应位置添加.例如添加[3, 4]使原列表扩充为[[1, 3], [2, 4]],再添加[5, 6]扩充为[[1, 3, 5], [2, 4, 6]]等等. 其实不动脑筋的话,用个二重循环很容易写出来: def trans(m): a = [[] for i in m[0]] for i in m: f

  • 对python 矩阵转置transpose的实例讲解

    在读图片时,会用到这么的一段代码: image_vector_len = np.prod(image_size)#总元素大小,3*55*47 img = Image.open(path) arr_img = np.asarray(img, dtype='float64') arr_img = arr_img.transpose(2,0,1).reshape((image_vector_len, ))# 47行,55列,每个点有3个元素rgb.再把这些元素一字排开 transpose是什么意识呢?

  • Numpy中转置transpose、T和swapaxes的实例讲解

    利用Python进行数据分析时,Numpy是最常用的库,经常用来对数组.矩阵等进行转置等,有时候用来做数据的存储. 在numpy中,转置transpose和轴对换是很基本的操作,下面分别详细讲述一下,以免自己忘记. In [1]: import numpy as np In [2]: arr=np.arange(16).reshape(2,2,4) In [3]: arr Out[3]: array([[[ 0, 1, 2, 3], [ 4, 5, 6, 7]], [[ 8, 9, 10, 11

  • numpy.transpose对三维数组的转置方法

    如下所示: import numpy as np 三维数组 arr1 = np.arange(16).reshape((2, 2, 4)) #[[[ 0 1 2 3] # [ 4 5 6 7]] # [[ 8 9 10 11] # [12 13 14 15]]] arr2=arr1.transpose((1,0,2)) #[[[ 0 1 2 3] # [ 8 9 10 11]] # # [[ 4 5 6 7] # [12 13 14 15]]] 正序为(0,1,2),数组为 #[[[ 0 1 2

  • 在NumPy中创建空数组/矩阵的方法

    如何在NumPy中创建空数组/矩阵? 在添加行的情况下,你最好的选择是创建一个与数据集最终一样大的数组,然后向它添加数据 row-by-row: >>> import numpy >>> a = numpy.zeros(shape=(5,2)) >>> a array([[ 0., 0.], [ 0., 0.], [ 0., 0.], [ 0., 0.], [ 0., 0.]]) >>> a[0] = [1,2] >>&g

  • 详解Python二维数组与三维数组切片的方法

    如果对象是二维数组,则切片应当是x[:]的形式,里面有一个冒号,冒号之前和之后分别表示对象的第0个维度和第1个维度: 如果对象是三维数组,则切片应当是x[::],里面有两个冒号,分割出三个间隔,三个间隔的前.中和后分别表示对象的第0.1.2个维度. x[n,:].x[:,n].x[m:n,:].x[:,m:n] 上面的中括号中(m:n)应当看成一个整体,除了(m:n)之外的冒号就是用来表明在哪个维度上操作的. 对于二维数组,在冒号前面的(n,)意味着对二维数组的第0个维度上的第n号元素操作,在冒

  • Python 用NumPy创建二维数组的案例

    前言 上位机实战开发先放一放,今天来学习一个新的内容-NumPy的使用 1 一维数组 例:用普通方法生成一维数组 num = [0 for i in range(1,5)] # 创建一维数组 print(num) # 打印数组 print("-"*50) # 分割线 num[2]=6 # 将第三个元素修改位6 print(num) # 打印数组 print("-"*50) # 分割线 运行结果 例:用numpy生成一维数组 from numpy import * m

  • Python numpy.transpose使用详解

    前言 看Python代码时,碰见 numpy.transpose 用于高维数组时挺让人费解,通过一番画图分析和代码验证,发现 transpose 用法还是很简单的. 注:评论中说的三维坐标图中的 0 1 2 3 标反了,已经修正,感谢大家提醒(2019.02). 正文 Numpy 文档 numpy.transpose中做了些解释,transpose 作用是改变序列,下面是一些文档Examples: 代码1: x = np.arange(4).reshape((2,2)) 输出1: #x 为:ar

  • numpy.transpose()实现数组的转置例子

    说到转置操作,顺便提及矩阵与数组的区别: 矩阵:数学里的概念,其元素只能是数值,这也是区别于数组的根本所在 数组:计算机中的概念,代表一种数据组织.存储方式,其元素可以是数字.也可以是字符 数组的转置操作,是借鉴了线性代数中矩阵的转置操作.将行与列对调,即第一行变成第一列-..或第一列变成第一行-..的操作即使转置操作. 1. 多维数组的转置 import numpy as np test = np.array([[12,4,7,0],[3,7,45,81]]) test # 以下为test输出

  • ndarray数组的转置(transpose)和轴对换方式

    目录 ndarray数组的转置(transpose)和轴对换 1 .T 2. transpose 3.swapaxes ndarray数据基本操作 数组与标量的运算 数组与数组的运算 数组的索引与切片 ndarray-布尔类型索引 ndarray-花式索引:指的是利用整数数组进行索引的方式. ndarray-数组转置与轴对换 ndarray-通用函数/常用函数 一元函数 二元函数 ndarray-聚合函数 np.where函数 np.unique函数 总结 ndarray数组的转置(transp

  • python读取图片的方式,以及将图片以三维数组的形式输出方法

    近期做个小项目需要用到python读取图片,自己整理了一下两种读取图片的方式,其中一种用到了TensorFlow,(TensorFlow是基于python3 的).代码及运行结果如下所示: import numpy as np from PIL import Image import matplotlib.pyplot as plt image = Image.open(r'C:\Users\Administrator\Desktop\data\train\forest_001.jpg') #读

  • python numpy库中数组遍历的方法

    1.对于一维数组,可以有: 2. 对于二维数组:考虑可将其看作为矩阵,故可以如下书写二重遍历 这里外层循环的是二维数组A的行,内层则是列 同时c的作用:不想用肉眼直接观察得到行列数,故用A.shape方法获得(2,6)的元组,然后改变数据类型为列表,然后直接使用. 3.对于三维数组,如: 有两个二维数组,二维数组中又有三个长度为4的数组.可以这样子循环: 又len(f) = 2, len(f[0]) = 3, len(f[0][0]) = 4;故可以再一次改进代码,这里就不写了. f[0]:三维

随机推荐