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)
blank

相关推荐

  • RewriteRule指令[通俗易懂]

    RewriteRule指令[通俗易懂]作为RewriteRule指令的第三个参数。Flags是一个包含以逗号分隔的下列标记的列表: ‘last|L'(最后一个规则last)立即停止重写操作,并不再应用其他重写规则。它对应于Perl中的last命令或C语言中的break命令。这个标记可以阻止当前已被重写的URL为其后继的规则所重写。举例,使用它可以重写根路径的URL(‘/’)为实际存在的URL,比如,’/e/w

  • 零基础学习JAVA其实并不难!不相信?进来看看你就知道了

    零基础学习JAVA其实并不难!不相信?进来看看你就知道了其实Java并没有想象中的那么难,首先想要入这个行,要做好一个心理准备,那就是你想走远点,就得不间断的去学习,去汲取知识,前期不能怕辛苦,不要闲下来就打LOL、吃鸡、王者农药,有空就得多看看各种开源项目的代码,API的设计方式,各大网站的设计架构,理解各个环节的作用。补齐自己的知识视野。  当然这个行业也并不是什么门槛都没有,不要再私信我初中生、高中生、中专生能不能学习Java了。反正我个人是认为不可行的,或许你可以去问问其他大神?或许他们会觉得可以的。  下图是我更新过的自学表,分别分为4个阶段。按

  • [下载]Enterprise Library for .NET Framework 2.0正式版

    [下载]Enterprise Library for .NET Framework 2.0正式版

  • mutual information loss_munication

    mutual information loss_munication今天挺paperreading的时候,听到了最大化互信息,还不清楚互信息是个什么东东,google了一下,从http://en.wikipedia.org/wiki/Mutual_information摘过来了:    DefinitionofmutualinformationFormally,themutualinformationoftwod

  • Pycharm2020.1安装中文语言插件教程,不需要汉化

    Pycharm2020.1安装中文语言插件教程,不需要汉化方法一(在搜索不到插件):1.安装好Pycharm并打开Pycharm2.打开File,找到Settings并打开3.打开Settings中的Pulgins,选择Marketplace,搜索chinese出现下图这个就可以在线安装,不出现离线安装(方法二)方法二(推荐):1.查看Pycharm版本help–about2.打开中文插件的下载地址(https://plugins.j…

  • vue 实现父子组件传值和子父组件传值

    vue 实现父子组件传值和子父组件传值先上一张图,vue父子组件传值都用的图片。从张图入手了解如何传参。一、父组件1.引入子组件importrandomfrom”./child-random-paper”;2.注册子组件components:{random,},3.静态组件,循环体<liv-for=”(item,index)inselectedTypeQuestion”:key=”item.id”:ind…

发表回复

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

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