• 关于python中的transpose


    原文地址:https://www.cnblogs.com/chenyansu/p/6774963.html,

    看书中看到一行代码:

    mymatrix5 = mat([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])

    mymatrix5.transpose()

    在Numpy对矩阵的转置中,我们可以用transpose()函数来处理。

        这个函数的运行是非常反常理的,可能会令人陷入思维误区。

        假设有这样那个一个三维数组(2*4*2):

        array ([[[ 0, 1, 2, 3],
                   [ 4, 5, 6, 7]],

                [[ 8, 9, 10, 11],
                [12, 13, 14, 15]]])

    (1). 错误的观点

        我们通常的想法是

        从x轴看去,0, 1 ,2 ,3

        从y轴看去,0,4

        从z轴看去,0, 8

        这样表达或许更清晰

           y                                        y

    x:    0,    1,     2,     3     ----z---- 8,     9,     10,     11

           4,    5,     6,     7     ----z----12,    13,    14,    15

        下标的排列为[x, y, z]

    (2). 正确的观点

        事实上,上述庙是是错误的,我们可以通过下标来测试:

    arr[0, 0, 0]
    0

    arr[1, 0, 0]
    8

    arr[0, 1, 0]
    4

    arr[0, 0, 1]
    1

        可以看出,通过改变第一个下标, 我们实际的变动为(1)中表示的z,而不是x,arr[1, 0, 0]所得的数是8而不是1;通过改变第三个下标, 我们实际的变动为(1)中表示的x,而不是z,arr[0, 0, 1]所得的数是1而不是8.

        所以,一个数的下标为[z, y, x]

    (3)transpose函数的使用

        首先,我们利用transpose原样输出

    arr.transpose((0, 1, 2))

    -----------结果的分割线----------
    array([[[ 0, 1, 2, 3],
                [ 4, 5, 6, 7]],

                [[ 8, 9, 10, 11],
                [12, 13, 14, 15]]])

        在这里,transpose()函数的(0, 1, 2)对应着(z, y, x)轴

        当我们输入arr.transpose((0, 2, 1))时,产生下列结果
    array([[[ 0, 4],
                [ 1, 5],
                [ 2, 6],
                [ 3, 7]],  

                [[ 8, 12],
                [ 9, 13],
                [10, 14],
                [11, 15]]])

        我们可以看到,当我们改变了1和2的位置,x和y转置了。

    (4)总结:重点在于理解,三维数组的下标为[z, y, x], transpose()对其的默认编号为0=z, y=1, x=2.

  • 相关阅读:
    约瑟夫问题
    [bzoj] 2049 洞穴勘探 || LCT
    [bzoj] 1597 土地购买 || 斜率优化dp
    [usaco] 2008 Dec Largetst Fence 最大的围栏 2 || dp
    [LNOI] 相逢是问候 || 扩展欧拉函数+线段树
    [bzoj] 1588 营业额统计 || Splay板子题
    [hdu] 5115 Dire Wolf || 区间dp
    [poj] 1651 Multiplication Puzzle || 区间dp
    [bzoj] 1090 字符串折叠 || 区间dp
    [bzoj] 1068 压缩 || 区间dp
  • 原文地址:https://www.cnblogs.com/guochaoxxl/p/13294032.html
Copyright © 2020-2023  润新知