zoukankan      html  css  js  c++  java
  • numpy.ndarray.transpose用法理解

    numpy.ndarray.transpose方法对于高维数组来讲,略微有点不太好理解。下面给出我自己对该方法的理解。

    对于一个高维数组,transpose((i,j,k))可以这样理解:选取原数组的i轴上的数据作为新数组的0轴,选取原数组的j轴上的数据作为新数组的1轴。而0轴可想象为“片”,1轴可想象为“片上的行”,2轴可想象为“片上的列”。

    具体操作来讲:

    >>>import numpy as np
    >>>a=np.arange(16).reshape(2,2,4)
    
    >>>a
    array([[[ 0,  1,  2,  3],
            [ 4,  5,  6,  7]],
    
           [[ 8,  9, 10, 11],
            [12, 13, 14, 15]]])
    >>>a.transpose((2,1,0))
    array([[[ 0,  8],
            [ 4, 12]],
    
           [[ 1,  9],
            [ 5, 13]],
    
           [[ 2, 10],
            [ 6, 14]],
    
           [[ 3, 11],
            [ 7, 15]]])
    

    选取原数组的2轴的数据作为新数组的0轴,比如0,4,8,12必须在新数组的0轴上,那么到底是[[0,4],[8,12]]还是[[0,8],[4,12]]?

    再看j=1,即原1轴上的仍然是新的1轴,即新数组的row就是原数组的row,所以4不能转到1轴,所以是[[0,8],[4,12]]

    >>>a.transpose((1,2,0))
    array([[[ 0,  8],
            [ 1,  9],
            [ 2, 10],
            [ 3, 11]],
    
           [[ 4, 12],
            [ 5, 13],
            [ 6, 14],
            [ 7, 15]]])
    

    选取原数组的1轴的数据作为新数组的0轴,比如0,1,2,38,9,10,11必须在新数组的0轴上,那么到底是横排还是竖排?

    再看j=2,即原数组的2轴变成新数组的1轴,意思就是原来的列就是现在的行,那确定就是竖排。

    >>>a.transpose((0,2,1))
    array([[[ 0,  4],
            [ 1,  5],
            [ 2,  6],
            [ 3,  7]],
    
           [[ 8, 12],
            [ 9, 13],
            [10, 14],
            [11, 15]]])
    

    原来的0轴还是新的0轴,那么横排还是竖排?

    j=2,即行变列,竖排。

    >>>a.transpose((2,0,1))
    array([[[ 0,  4],
            [ 8, 12]],
    
           [[ 1,  5],
            [ 9, 13]],
    
           [[ 2,  6],
            [10, 14]],
    
           [[ 3,  7],
            [11, 15]]])
    

    老规矩,先把原数组所有“片”的列拿出来当作新的“片”,那么老问题,竖排还是横排?

    j=0,意思就是原“片”中的数据必须是“行”,所以横排。

    ##### 愿你一寸一寸地攻城略地,一点一点地焕然一新 #####
  • 相关阅读:
    eclipse+myeclipse 使用技巧备忘
    程序员的自我修养
    枚举工具类 EnumUtils
    日期/时间处理工具 DateTimeUtil
    轻松了解Spring中的控制反转和依赖注入(一)
    了解SpringMVC框架及基本工作流程
    HTTP请求行、请求头、请求体详解
    Tomcat项目部署问题记录
    入手IntelliJ IDEA 常用配置
    解决阿里云OSS跨域问题
  • 原文地址:https://www.cnblogs.com/johnyang/p/14127904.html
Copyright © 2011-2022 走看看