自学内容网 自学内容网

numpy的axis

2D情形

axis0为高(垂直方向)、axis1为宽(水平方向)

3D情形

三根轴符合左手坐标系

In: a
Out: 
array([[[ 1,  2,  3],
        [ 4,  5,  6]],
       [[ 2,  4,  6],
        [ 8, 10, 12]],
       [[ 3,  6,  9],
        [12, 15, 18]]])
        
In: a[0,:,:] #axis0的第一层
Out: 
array([[1, 2, 3],
       [4, 5, 6]])
       
In: a[:,0,:] #axis1的第一层
Out: 
array([[1, 2, 3],
       [2, 4, 6],
       [3, 6, 9]])
       
In: a[:,:,0] #axis2的第一层
Out: 
array([[ 1,  4],
       [ 2,  8],
       [ 3, 12]])

在这里插入图片描述

调换各轴顺序

交换张量的axis0与axis1,就相当于把原来的张量绕axis2转90度,即沿axis2的每层矩阵进行转置。

In: b = np.swapaxes(a,0,1) # 交换axis0与axis1

In: a.shape
Out: (3, 2, 3)

In: b.shape
Out: (2, 3, 3)

In: b
Out: 
array([[[ 1,  2,  3],
        [ 2,  4,  6],
        [ 3,  6,  9]],
       [[ 4,  5,  6],
        [ 8, 10, 12],
        [12, 15, 18]]])

在这里插入图片描述
调换顺序时,将原先的axis1替换为axis0,axis1位于原先的axis0上但方向由左手坐标系决定。

除了用官方函数,也可以直接遍历轴进行调换顺序。如上面的问题,则遍历axis2,对每个矩阵进行转置可达到np.swapaxes同样效果。

In: c = np.zeros([2,3,3])
In: for i in range(3):
     c[:,:,i] = a[:,:,i].T

In: c
Out: 
array([[[ 1.,  2.,  3.],
        [ 2.,  4.,  6.],
        [ 3.,  6.,  9.]],
       [[ 4.,  5.,  6.],
        [ 8., 10., 12.],
        [12., 15., 18.]]])

原文地址:https://blog.csdn.net/qq_37083038/article/details/143813736

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!