【官网】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]]])