numpy.ndarray.transpose用法理解
numpy.ndarray.transpose方法对于高维数组来讲,略微有点不太好理解。下面给出我自己对该方法的理解。
对于一个高维数组,transpose((i,j,k))可以这样理解:选取原数组的i轴上的数据作为新数组的0轴,选取原数组的j轴上的数据作为新数组的1轴。而0轴可想象为“片”,1轴可想象为“片上的行”,2轴可想象为“片上的列”。
具体操作来讲:
>>>import numpy as np
>>>a=np.arange(16).reshape(2,2,4)
>>>a
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]])
>>>a.transpose((2,1,0))
array([[[ 0, 8],
[ 4, 12]],
[[ 1, 9],
[ 5, 13]],
[[ 2, 10],
[ 6, 14]],
[[ 3, 11],
[ 7, 15]]])
选取原数组的2轴的数据作为新数组的0轴,比如0,4,8,12必须在新数组的0轴上,那么到底是[[0,4],[8,12]]还是[[0,8],[4,12]]?
再看j=1,即原1轴上的仍然是新的1轴,即新数组的row就是原数组的row,所以4不能转到1轴,所以是[[0,8],[4,12]]。
>>>a.transpose((1,2,0))
array([[[ 0, 8],
[ 1, 9],
[ 2, 10],
[ 3, 11]],
[[ 4, 12],
[ 5, 13],
[ 6, 14],
[ 7, 15]]])
选取原数组的1轴的数据作为新数组的0轴,比如0,1,2,3,8,9,10,11必须在新数组的0轴上,那么到底是横排还是竖排?
再看j=2,即原数组的2轴变成新数组的1轴,意思就是原来的列就是现在的行,那确定就是竖排。
>>>a.transpose((0,2,1))
array([[[ 0, 4],
[ 1, 5],
[ 2, 6],
[ 3, 7]],
[[ 8, 12],
[ 9, 13],
[10, 14],
[11, 15]]])
原来的0轴还是新的0轴,那么横排还是竖排?
j=2,即行变列,竖排。
>>>a.transpose((2,0,1))
array([[[ 0, 4],
[ 8, 12]],
[[ 1, 5],
[ 9, 13]],
[[ 2, 6],
[10, 14]],
[[ 3, 7],
[11, 15]]])
老规矩,先把原数组所有“片”的列拿出来当作新的“片”,那么老问题,竖排还是横排?
j=0,意思就是原“片”中的数据必须是“行”,所以横排。
numpy.ndarray.transpose用法理解的更多相关文章
- python中numpy.ndarray.shape的用法
今天用到了shape,就顺便学习一下,这个shape的作用就是要把矩阵进行行列转换,请看下面的几个例子就明白了: >>> import numpy as np >>> ...
- Numpy的简单用法
Numpy的简单用法 import numpy as np 一.创建ndarray对象 列表转换成ndarray: >>> a = [1,2,3,4,5] >>> ...
- Python Numpy shape 基础用法(转自他人的博客,如涉及到侵权,请联系我)
Python Numpy shape 基础用法 shape函数是numpy.core.fromnumeric中的函数,它的功能是读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度.它的输入 ...
- NumPy Ndarray 对象
NumPy Ndarray 对象 NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引. ndarray 对象是用于存放 ...
- numpy.random.random & numpy.ndarray.astype & numpy.arange
今天看到这样一句代码: xb = np.random.random((nb, d)).astype('float32') #创建一个二维随机数矩阵(nb行d列) xb[:, 0] += np.aran ...
- Py修行路 NumPy模块基本用法
NumPy系统是Python的一种开源的数值计算扩展,一个用python实现的科学计算包.这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结 ...
- anaconda及jupyter notebook的使用之numpy模块的用法(2)
今日内容概要 numpy模块结束 ndarray创建 numpy内置方法 索引与切片(花式索引.布尔索引) 常用函数 统计方法 随机数 numpy的内置方法 import numpy as np 1. ...
- numpy.ndarray类型方法
numpy.ndarray 类numpy.ndarray(shape,dtype = float,buffer = None,offset = 0,strides = None,order = Non ...
- CSS3用法理解
这里只概括了我对CSS3各属性的用法理解.具体每个属性的值,以及例子,看这里 (竟然每篇文章不能低于200字,不能低于200字不能低于200字不能低于200字不能低于200字....请无视)
- has invalid type <class 'numpy.ndarray'>, must be a string or Tensor
转自: https://blog.csdn.net/jacke121/article/details/78833922 has invalid type <class 'numpy.ndarra ...
随机推荐
- QT5笔记:7. 自定义类、自定义信号及类的元对象信息
自定义的QPerson类,需要继承 QObject类 qperson.h头文件 #ifndef QPERSON_H #define QPERSON_H #include <QObject> ...
- Zookeeper - 客户端常用命令
查看客户端命令帮助信息 查看Zookeeper的版本 查看使用过的历史命令 查看根目录下的znode 创建znode 查看节点信息 修改znode的内容 删除znode 关闭连接 连接客户端 退出客户 ...
- Caused by: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String 解决办法
使用MyBatis 更新数据库数据的时候 遇到了这个错误: Caused by: java.lang.IllegalArgumentException: invalid comparison: jav ...
- 国产数据库高光时刻!天翼云TeleDB荣登TPC-DS全球测评总榜第二
近日,天翼云TeleDB数据库以40206063QphDS的吞吐量在国际权威机构TPC(国际事务处理性能委员会)发布的数据库基准测试TPC-DS中荣登全球榜单第二位.中国数据库技术跻身国际顶尖行列,这 ...
- go ERROR invalid character '<' looking for beginning of value
报错 go ERROR invalid character '<' looking for beginning of value 请检查服务器响应数据是否正确,能够正确被 json 解析 一般碰 ...
- SpringBoot+微信支付-JSAPI
引入微信支付SDK Maven: com.github.wechatpay-apiv3:wechatpay-java-core:0.2.12 Maven: com.github.wechatpay-a ...
- delphi 让执行程序不在任务栏显示
Application.MainFormOnTaskbar := False; procedure TForm1.FormShow(Sender: TObject); begin ShowWindow ...
- Windows下Dll在Unity中使用的一般方式
Windows下Dll在Unity中使用的一般方式 Unity中虽然已经有广泛的库和插件,但是相较于C++的库生态而言,还是有一定的差距:因此本篇博文记录Windows下将C++函数打包成动态链接库在 ...
- 【Python】【魔术方法】(一)构造和初始化
本篇讲解的魔术方法: __new__ __init__ __del__ __repr__ __format__ __bytes__ 1. __new__ 在Python中,__new__ 方法是一个特 ...
- 什么是 CSS 设计模式
这是转载的,先收藏到我的博客园. 什么是设计模式? 曾有人调侃,设计模式是工程师用于跟别人显摆的,显得高大上:也曾有人这么说,不是设计模式没用,是你还没有到能懂它,会用它的时候. 先来看一下比较官方的 ...