numpy.transpose对三维数组的转置方法
作者:LeonJin_ 发布时间:2023-10-11 07:32:36
标签:三维,数组,转置,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]]]
结果一样!
来源:https://blog.csdn.net/jin739738709/article/details/76136776


猜你喜欢
- 页面加载loading效果, 这个挺好玩的!用setTimeout实现的!可以和服务端整合弄一些生成HTML或者上传文件等应用!
- 导入pandas模块:import pandas as pd使用import读入pandas模块,并且为了方便使用其缩写pd指代。读入待处理
- 如何显示随机信息?使用了asp的randomize来创造随机数,select case来显示自定义信息。具体代码如下:<html>
- 又仔细看了一遍vuex的文档,还是云里雾里的,不过至少明白它是一个专门管理状态的,根据数据状态的改变可以驱动视图更新,既然是这样那至少登录注
- 本文实例讲述了MySQL中ROUND函数进行四舍五入操作陷阱。分享给大家供大家参考,具体如下:在MySQL中, ROUND 函数用于对查询结
- 一、数字类型。数字类型按照我的分类方法分为三类:整数类、小数类和数字类。 我所谓的“数字类”,就是指DECIMAL和NUMERIC,它们是同
- 遍历字典: keys() 、values() 、items()1. xxx.keys() : 返回字典的所有的key 返回一个序列,序列中保
- 一、前言好不容易女神喊我去看电影,但是她又不知道看啥,那么我当然得准备准备~二、前期准备1、使用的软件python 3.8 开源 免费的 (
- 1.由于设置了slave的配置信息,mysql在数据库data目录下生成master.info,所以如有要修改相关slave的配置要先删除该
- 栈溢出const data = { foo: 1 }const obj = new Proxy(data, {/*...*/})effect
- 可实现类似于sql中的dateadd、datesub的功能两种获取日期的方式z=datetime.datetime(2016,12,5)z=
- 一、字典的基本操作1.定义字典 字典也是一个列表型的数据结构,字典的数据是用“{ }&rd
- 前言本人做SSM项目的时候,在做删除功能时,发现找不到字段,在搜索了各种博客之后终于找到了解决办法一、报错Unknown column &a
- 1 蚂蚁森林简介蚂蚁森林是一项旨在带动公众低碳减排的公益项目,每个人的低碳行为在蚂蚁森林里可计为"绿色能量"。"
- 前言在开始本文之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识)、python type()(数据类型)和val
- 本文介绍了Python字符串格式化,主要有两种方法,分享给大家,具体如下用于字符串的拼接,性能更优。字符串格式化有两种方式:百分号方式、fo
- 2003年以来,网页的平均尺寸已经增长3倍。从2003到2008,网页的平均尺寸从93.7K增至312K,增幅233%。同时,在这5年之内,
- * address - 地址 * blockquote - 块引用 * center - 举中对齐块 * di
- 起步Python 提供的多线程模型中并没有提供读写锁,读写锁相对于单纯的互斥锁,适用性更高,可以多个线程同时占用读模式的读写锁,但是只能一个
- 1.在列属性中加入事件 { &