利用python进行数据分析中第二版第四章有关于 NumPy库的介绍, 有关于 arr.transpose 方法的心得记录如下:
arr = np.arange(16).reshape(2,2,4)
结果就是
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]])
理解为: 可以新建一个 2个一级元素,每个一级元素中又包含2个二级元素,每个二级元素中包含4个元素的三维(理解为三层)数组..这种描述我不知道对不对..自学的..见谅
一级元素两个:
[[ 0, 1, 2, 3],[ 4, 5, 6, 7]] #对应索引 arr[0]
[[ 8, 9, 10, 11],[12, 13, 14, 15]] #对应索引 arr[1]
二级元素四个:
[ 0, 1, 2, 3] #对应索引 arr[0][0]
[ 4, 5, 6, 7] #对应索引 arr[0][1]
[ 8, 9, 10, 11] #对应索引 arr[1][0]
[12, 13, 14, 15] #对应索引 arr[1][1]
第三层元素就是
0 #对应索引 arr[0][0][0]
1 #对应索引 arr[0][0][1]
2 #对应索引 arr[0][0][2]
3 #对应索引 arr[0][0][3]
.
.
.
也就是说 每个最基层的元素都可以用 3个数字来表达..用一个元祖来表现就是 (X,Y,Z)
这时候
arr.transpose((1,0,2))
结果是
array([[[ 0, 1, 2, 3],
[ 8, 9, 10, 11]],
[[ 4, 5, 6, 7],
[12, 13, 14, 15]]])
理解就是:
对每一个基层元素的元祖表达式,即:(X,Y,Z)进行转置.
转置方式为:(0,1,2) >>> (1,0,2)
也就是每一个元素都是 (X,Y,Z) >>> (Y,X,Z)
即:
值 | 原表达式 | 转置后表达式
0 [0,0,0] [0,0,0]
1 [0,0,1] [0,0,1]
2 [0,0,2] [0,0,2]
3 [0,0,3] [0,0,3]
4 [0,1,0] [1,0,0]
5 [0,1,1] [1,0,1]
6 [0,1,2] [1,0,2]
7 [0,1,3] [1,0,3]
8 [1,0,0] [0,1,0]
9 [1,0,1] [0,1,1]
10 [1,0,2] [0,1,2]
11 [1,0,3] [0,1,3]
12 [1,1,0] [1,1,0]
13 [1,1,1] [1,1,1]
14 [1,1,2] [1,1,2]
15 [1,1,3] [1,1,3]
所以结果是
array([[[ 0, 1, 2, 3],
[ 8, 9, 10, 11]],
[[ 4, 5, 6, 7],
[12, 13, 14, 15]]])
3444

被折叠的 条评论
为什么被折叠?



