Python numpy 里面的np.transpose 的用法

TensorFlow中图片预处理需要用到np.transpose的用法

这是引用别人的原创文章,记录学习用。
————————————————
版权声明:本文为CSDN博主「jeffery0207」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jeffery0207/article/details/79411334
在这里插入图片描述
参数 a:输入数组
axis: int类型的列表,这个参数是可选的。默认情况下,反转的输入数组的维度,当给定这个参数时,按照这个参数所定的值进行数组变换。
返回值 p:ndarray 返回转置过后的原数组的视图。

import numpy as np
 
 
arr = np.arange(30).reshape(5, 6)
print(arr)
tran_arr = np.transpose(arr, axes=None)
print(tran_arr)

输出结果为:

[[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]
[12 13 14 15 16 17]
[18 19 20 21 22 23]

[24 25 26 27 28 29]]

[[ 0 6 12 18 24]
[ 1 7 13 19 25]
[ 2 8 14 20 26]
[ 3 9 15 21 27]
[ 4 10 16 22 28]
[ 5 11 17 23 29]]
这个结果意料之中,很好理解,就是线性代数的转置矩阵

2、再看看多维(三维为例)矩阵
a.首先,要明确坐标问题

np.arange(12).reshape(2, 2, 3)

(2, 2, 3) 分别代表 d, h, w

我们不妨继续看看:

arr = np.arange(12).reshape(2, 2, 3)
print(arr[1, 0, 0])

6
这下明白了吧,动手实践,多试几个

b. 接下来还要明白一个索引问题

形状索引
20
21
32

我们看看代码:

arr = np.arange(12).reshape(2, 2, 3)
print(arr)
tran_arr = np.transpose(arr, (1, 0, 2))  # (1, 0, 2)即为上面所说的索引号
print(tran_arr)

输出结果:

[[[ 0 1 2]
[ 3 4 5]]

[[ 6 7 8]
[ 9 10 11]]]

[[[ 0 1 2]
[ 6 7 8]]

[[ 3 4 5]
[ 9 10 11]]]

这样就实现了转置矩阵,但是对于初学者这个例子恐怕远远不够理解,我们换个例子你就懂啦!

arr = np.arange(24).reshape(3, 4, 2)
print(arr)
tran_arr = np.transpose(arr, (1, 0, 2))
print(tran_arr)

输出结果:

    [[[ 0  1]

[ 2 3]
[ 4 5]
[ 6 7]]

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

[[16 17]
[18 19]
[20 21]
[22 23]]]

[[[ 0 1]

[ 8 9]
[16 17]]

[[ 2 3]
[10 11]
[18 19]]

[[ 4 5]
[12 13]
[20 21]]

[[ 6 7]
[14 15]
[22 23]]]

        上面的shape 由(3,4,2)变成了(4,3,2),不就是因为索引号由(0,1,2)变成了(1,0,2)吗?

转置就是这么简单!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值