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

利用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]]])
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值