您的位置:首页 > 编程语言 > Python开发

关于Python NumPy 库中 arr.transpose 方法的心得记录

2018-08-15 11:29 239 查看

利用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]]])
阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: