解疑 Numpy 中的 transpose
2017-05-06 10:45
239 查看
transpose
# 官方文档描述 numpy.ndarray.transpose ndarray.transpose(*axes) Returns a view of the array with axes transposed. For a 1-D array, this has no effect. (To change between column and row vectors, first cast the 1-D array into a matrix object.) # transpose 对一维数组无效 For a 2-D array, this is the usual matrix transpose. For an n-D array, if axes are given, their order indicates how the axes are permuted (see Examples). If axes are not provided and a.shape = (i[0], i[1], ... i[n-2], i[n-1]), then a.transpose().shape = (i[n-1], i[n-2], ... i[1], i[0]). # 对二维数组,其实就相当于矩阵的转置 Parameters: axes : None, tuple of ints, or n ints None or no argument: reverses the order of the axes. tuple of ints: i in the j-th place in the tuple means a‘s i-th axis becomes a.transpose()‘s j-th axis. n ints: same as an n-tuple of the same ints (this form is intended simply as a “convenience” alternative to the tuple form) Returns: out : ndarray View of a, with axes suitably permuted. See also ndarray.T Array property returning the array transposed. Examples >>> >>> a = np.array([[1, 2], [3, 4]]) >>> a array([[1, 2], [3, 4]]) >>> a.transpose() array([[1, 3], [2, 4]]) >>> a.transpose((1, 0)) array([[1, 3], [2, 4]]) >>> a.transpose(1, 0) array([[1, 3], [2, 4]])
对于三维数组难理解一点:假设 shape(z, x, y)
shape 的 x轴 与 y 轴的转换比较简单, 跟二维数组一样
In [27]: arr.transpose((0, 2, 1)) Out[27]: array([[[ 0, 4], [ 1, 5], [ 2, 6], [ 3, 7]], [[ 8, 12], [ 9, 13], [10, 14], [11, 15]]])
对于 z 轴 与 x 轴的变换
In [40]: arr = np.arange(16).reshape((2, 2, 4)) In [41]: arr Out[41]: array([[[ 0, 1, 2, 3], [ 4, 5, 6, 7]], [[ 8, 9, 10, 11], [12, 13, 14, 15]]]) In [42]: arr.transpose((1, 0, 2)) Out[42]: array([[[ 0, 1, 2, 3], [ 8, 9, 10, 11]], [[ 4, 5, 6, 7], [12, 13, 14, 15]]])
transpose 的变换是根据 shape 进行的
转换前 shape 是(0, 1, 2)
[[(0,0,0), (0,0,1), (0,0,2), (0,0,3)] // [[[ 0, 1, 2, 3],
[(0,1,0), (0,1,1), (0,1,2), (0,1,3)], // [ 4, 5, 6, 7]],
[(1,0,0), (1,0,1), (1,0,2), (1,0,3)] // [[ 8, 9, 10, 11],
[(1,1,0), (1,1,1), (1,1,2), (1,1,3)]]. //[12, 13, 14, 15]]]
转换后 shape 是(1, 0, 2), 也就是调换位于 z 轴 和 x 轴的shape
[[(0,0,0), (0,0,1), (0,0,2), (0,0,3)]
(1,0,0), (1,0,1), (1,0,2), (1,0,3)],
[(0,1,0), (0,1,1), (0,1,2), (0,1,3)]
[(1,1,0), (1,1,1), (1,1,2), (1,1,3)]]
将转换前 shape 对应的值填进去 得到
[1,2,3,4] [8,9,10,11] [4,5,6,7] [12,13,14,15]
so perfect 刚好对应输出
相关文章推荐
- numpy.transpose对三维数组的转置
- numpy中,矩阵的三种转置transpose、getT、getH的区别
- Numpy的c_和r_以及transpose
- Python numpy.transpose 详解
- numpy.transpose对三维数组的转置方法
- Numpy中转置transpose、T和swapaxes
- Numpy中的transpose
- numpy中transpose和swapaxes函数讲解
- numpy之转置(transpose)和轴对换
- Numpy中转置transpose、T和swapaxes的实例讲解
- numpy.transpose解析
- numpy.transpose 使用问题
- numpy之转置(transpose)和轴对换
- numpy 维度、轴和transpose的理解
- numpy.transpose高维的理解
- numpy基础——matrix.transpose() 和 matrix.getA()
- 从numpy.ndarray.shape到numpy.ndarray.transpose
- numpy中的转置(transpose)和轴对换
- Numpy中数组转置和轴对换——transpose、T、swapaxes
- 【Numpy学习记录】np.transpose讲解