np.transpose()函数和arr.T都可以获得转置矩阵.两者的区别是arr.T只适用于低维矩阵,而np.transpose()适用于任何维度的矩阵变换.

我们来复习一下转置矩阵的定义:将矩阵的行列互换得到的新矩阵称为转置矩阵.
例如:

对于低维矩阵(1~2维)

np.transpose()函数和arr.T同样适用

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

对于高维度矩阵

对于高级矩阵的转置需要在np.transpose()传入参数告诉其应该如何变换坐标轴.

我们先创建一个3维矩阵,并打印出来看看是什么样子的

>>> 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]]])

使用参数(0,1,2)进行转置,发现矩阵没有变化,说明矩阵未转置之前的坐标轴排列就是(0,1,2)

>>> arr.transpose((0,1,2))
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7]],

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

现在将矩阵的0轴和1轴交互,看一下结果

>>> arr.transpose((1,0,2))
array([[[ 0,  1,  2,  3],
        [ 8,  9, 10, 11]],

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

posted @ 2018-05-13 22:13:46
评论加载中...

发表评论