一、前言
今天看源码的时候,发现了numpy的transponse函数没有理解,特意学习记录一下。numpy.transpose()函数是对矩阵按照所需要的要求进行转置的。
二、实例分析
我们通过代码进行测试分析。
1 2 3 4 5 6 7 8 9 10 11 12 13 | # -*- coding: utf-8 -*- import numpy as np if __name__ == '__main__': a = np.array(np.arange(40).reshape(2, 4, 5)) print('转置前:') print(a) print(a[0][3][4]) b = np.transpose(a, [1, 2, 0]) print('转置后:') print(b) print(b[3][4][0]) |
运行结果如下:
从上图可以看出,数组a的shape为(2,4,5),它是一个三位数组,那么这个元组对应的索引值为:(0,1,2)。也就是a.shpae的下标:(2[0],4[1],5[2]),[]中对应的是shape元组的索引值,现在,通过transponse(a, [1, 2, 0]),那么元组的shape就从(2[0],4[1],5[2])变成了(4[1],5[2],2[0])。
可以看到transponse其实就是该百年了高维数组的形状,对里面的元素进行了重新排序。
例如:
元素19的位置在a中的位置为a[0][3][4],经过transponse(a, [1, 2, 0])后,元素19的位置变为了b[3][4][0]。
三、总结
细细体会,发现规律之后,其实就很简单了。
微信公众号
分享技术,乐享生活:微信公众号搜索「JackCui-AI」关注一个在互联网摸爬滚打的潜行者。
2018年2月27日 下午3:02 沙发
网站做的真牛逼!
那么元组的shape就从(2[0],4[1],5[2])变成了(4[1],2[0],5[2])
是(4[1],5[2],2[0])把~
2018年2月27日 下午3:23 1层
@KodChen 感谢支持!
之前写错了,已更正:通过transponse(a, [1, 2, 0]),那么元组的shape就从(2[0],4[1],5[2])变成了(4[1],5[2],2[0])。
2018年4月16日 下午7:45 板凳
transpose转置和T方法转置有什么区别
2018年4月16日 下午8:02 1层
@saber酱 用一个相同的数据,使用transpose和T的方法,测试下就知道了。