Python numpy.transpose 详解

前言
看Python代码时,碰见 numpy.transpose 用于高维数组时挺让人费解,通过一番画图分析和代码验证,发现 transpose 用法还是很简单的。

正文
Numpy 文档 numpy.transpose 中做了些解释,transpose 作用是改变序列,下面是一些文档Examples:

代码1:

x = np.arange(4).reshape((2,2))
1
输出1:

#x 为:
array([[0, 1],
[2, 3]])
1
2
3
代码2:

import numpy as np
x.transpose()
1
2
输出2:

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

x.transpose((0,1))
1
输出3:

x 没有变化

array([[0, 1],
[2, 3]])
1
2
3
代码4:

x.transpose((1,0))
1
输出4:

x 转置了

array([[0, 2],
[1, 3]])
1
2
3
这个很好理解:
对于x,因为:

代码5:

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

代码6:

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

注意,任何时候你都要保持清醒,告诉自己第一个方括号“[]”为 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)
1
2
3
4
5
6
7
8
输出7:

A = array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],

       [[ 8,  9, 10, 11],
        [12, 13, 14, 15]]])

1
2
3
4
5
我们对上述的A表示成如下三维坐标的形式:
在这里插入图片描述

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

A.transpose((0,1,2)) #保持A不变
A.transpose((1,0,2)) #将 0轴 和 1轴 交换
1
2
将 0轴 和 1轴 交换:
在这里插入图片描述

此时,输出

代码9:

A.transpose((1,0,2)) [0][1][2] #根据上图这个结果应该是10
1
后面不同的参数以此类推。

完。

作者:November丶Chopin
来源:CSDN
原文:https://blog.csdn.net/u012762410/article/details/78912667
版权声明:本文为博主原创文章,转载请附上博文链接!

更正,此处z轴的0123应该是3210

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值