【数据分析】Numpy——numpy.transpose() 转置函数

【官网】https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.transpose.html

numpy.transpose(a, axes=None)[source]

参数a:array_like,输入数组。

参数axes:int列表,可选,默认情况下,反转维度,否则根据给定的值排列坐标轴。
Examples
>>> x = np.arange(4).reshape((2,2))
>>> x
array([[0, 1],
       [2, 3]])
>>> np.transpose(x)
array([[0, 2],
       [1, 3]])
>>> x = np.ones((1, 2, 3))
>>> np.transpose(x, (1, 0, 2)).shape
(2, 1, 3)

1、转置可以对数组进行重置,返回的是源数据的视图(不会进行任何复制操作)

2、转置有三种方式:

    (1)transpose方法
    (2)T属性
    (3)swapaxes方法。

方式一:T适用于一、二维数组

>>> import numpy as np
>>> arr = np.arange(20).reshape(4,5)#生成一个4行5列的数组
>>> arr
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])
>>> arr.T #求转置
array([[ 0,  5, 10, 15],
       [ 1,  6, 11, 16],
       [ 2,  7, 12, 17],
       [ 3,  8, 13, 18],
       [ 4,  9, 14, 19]])

 

方式二:

对于高维数组,transpose需要用到一个由轴编号组成的元组,才能进行转置。

>>> arr = np.arange(12).reshape(2,2,3)
>>> arr
array([[[ 0,  1,  2],
        [ 3,  4,  5]],

       [[ 6,  7,  8],
        [ 9, 10, 11]]])
>>> arr.shape    # 看形状 
(2, 2, 3)        # 说明这是一个2*2*3的数组(矩阵),返回的是一个元组,可以对元组进行索引,也就是0,1,2
>>> 

transpose参数的真正意义在于这个shape元组的索引

>>> arr.transpose(1,0,2)
array([[[ 0,  1,  2],
        [ 6,  7,  8]],

       [[ 3,  4,  5],
        [ 9, 10, 11]]])

方式三:swapaxes

接受一对轴编号,进行轴对换,其实也就是shape参数。

>>> arr = np.arange(16).reshape(2,2,4)
>>> arr
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7]],

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

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

       [[ 8, 12],
        [ 9, 13],
        [10, 14],
        [11, 15]]])
>>> arr.swapaxes(1,0)   # 转置,对比transpose(1,0,2)
array([[[ 0,  1,  2,  3],
        [ 8,  9, 10, 11]],

       [[ 4,  5,  6,  7],
        [12, 13, 14, 15]]])

 

转载于:https://www.cnblogs.com/ITCSJ/p/11314953.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值