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