一、前言
今天看源码的时候,发现了numpy的transponse函数没有理解,特意学习记录一下。numpy.transpose()函数是对矩阵按照所需要的要求进行转置的。
二、实例分析
我们通过代码进行测试分析。
# -*- 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]。
三、总结
细细体会,发现规律之后,其实就很简单了。
来源:
https://cuijiahua.com/blog/2018/02/trick-2.html