Python numpy.transpose 详解「建议收藏」

Python numpy.transpose 详解「建议收藏」前言看Python代码时,碰见numpy.transpose用于高维数组时挺让人费解,通过一番画图分析和代码验证,发现transpose用法还是很简单的。正文Numpy文档numpy.transpose中做了些解释,transpose作用是改变序列,下面是一些文档Examples:代码1:x=np.arange(4).reshape((2,2))输出1:#x为:array(

大家好,又见面了,我是你们的朋友全栈君。

前言

看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 为:
array([[0, 1],
       [2, 3]])

代码2:

import numpy as np
x.transpose()

输出2:

array([[0, 2],
       [1, 3]])

对于二维 ndarray,transpose在不指定参数是默认是矩阵转置。如果指定参数,有如下相应结果:
代码3:

x.transpose((0,1))

输出3:

# x 没有变化
array([[0, 1],
       [2, 3]])

代码4:

x.transpose((1,0))

输出4:

# x 转置了
array([[0, 2],
       [1, 3]])

这个很好理解:
对于x,因为:

代码5:

x[0][0] == 0
x[0][1] == 1
x[1][0] == 2
x[1][1] == 3

我们不妨设第一个方括号“[]”为 0轴 ,第二个方括号为 1轴 ,则x可在 0-1坐标系 下表示如下:
这里写图片描述

代码6:

因为 x.transpose((0,1)) 表示按照原坐标轴改变序列,也就是保持不变
而 x.transpose((1,0)) 表示交换 ‘0轴’ 和 ‘1轴’,所以就得到如下图所示结果:

这里写图片描述

注意,任何时候你都要保持清醒,告诉自己第一个方括号“[]”为 0轴 ,第二个方括号为 1轴
此时,transpose转换关系就清晰了。


我们来看一个三维的:
代码7:

import numpy as np

# A是array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
A = np.arange(16)

# 将A变换为三维矩阵
A = A.reshape(2,2,4)
print(A)

输出7:

A = array([[[ 0,  1,  2,  3],
            [ 4,  5,  6,  7]],
            
           [[ 8,  9, 10, 11],
            [12, 13, 14, 15]]])

我们对上述的A表示成如下三维坐标的形式:

在这里插入图片描述

所以对于如下的变换都很好理解啦:
代码8:

A.transpose((0,1,2))  #保持A不变
A.transpose((1,0,2))  #将 0轴 和 1轴 交换

0轴 1轴 交换:

在这里插入图片描述
此时,输出

代码9:

A.transpose((1,0,2)) [0][1][2]	#根据上图这个结果应该是10

后面不同的参数以此类推。

完。
已移步知乎,欢迎关注哈。工作之余会更新。
知乎主页

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/137018.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 补番技巧

    补番技巧好想像别的大神一样写写技术博客啊,用代码来装点我的文章,可惜才疏学浅,我居然一点点的那个水平都没有,也只好写写这些每天所做的堕落的事情的方法了。。。。  1、补番强烈推荐B站,也就是大家常说的哔哩哔哩动画,网址为 http://www.bilibili.com/ ,原因有三个。第一:B站的大多是视频是没有广告的,所以不会让广告影响心情。第二:B站的弹幕文化非常有趣,有趣的空

  • 在pycharm中使用tensorflow_使用中是什么意思

    在pycharm中使用tensorflow_使用中是什么意思QtDesigner的介绍在PyQt中编写UI界面可以直接通过代码来实现,也可以通过QtDesigner来完成。QtDesigner的设计符合MVC的架构,其实现了视图和逻辑的分离,从而实现了开发的便捷。QtDesigner中的操作方式十分灵活,其通过拖拽的方式放置控件可以随时查看控件效果。QtDesigner生成的.ui文件(实质上是XML格式的文件)也可以通过pyuic5工具转换成…

  • sctp介绍「建议收藏」

    sctp介绍「建议收藏」SCTP介绍转自:http://www.ibm.com/developerworks/cn/linux/l-sctp/SCTP(STREAM CONTROL TRANSMISSION PROTOCOL 流控制传输协议)是IETF新定义的一个传输层transport layer协议(2000年)。是提供基于不可靠传输业务的协议之上的可靠的数据报传输协议。SCTP的设计用于通过IP网传输S

  • Linux(Centos7)机器间做互信

    Linux(Centos7)机器间做互信

  • 安卓设备转移代码_从安卓设备转移数据到苹果手机

    安卓设备转移代码_从安卓设备转移数据到苹果手机JihosoftPhoneTransfer提供一键式解决方案,可在Android和iOS设备之间传输数据,甚至可以轻松备份和恢复您的手机数据。这是非常容易使用。下载电话数据传输并完成安装过程后,您应该看到如下主窗口:第1部分:如何将数据从电话传输到电话1,将您的两个设备连接到计算机在主页上,点击“手机到手机”标签,并使用USB线将两台设备(Android或iOS)连接到计算机。通过电话转接连接…

  • java事务总述_什么是先总述后详述

    java事务总述_什么是先总述后详述java事务总述一、java事务概述1.1、java事务简述1、简介事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列SQL操作,这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行。如果任何一个SQL操作失败,那么整个操作就都失败,所有操作都会回滚到操作前状态,或者是上一个节点。2、java事务和数据库事务的关联实际上,一个Java应用系统,如果要操作数据库,则通过JDBC来实现的。增加、修改、删除都是通过相应方法间接来实现的,事务的控制也相应转移到Java程序代码中。因

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号