python编程精要(3)---numpy中的transpose

numpy中的transpose

numpy中最难理解的就是轴的transpose(转置)了,下面用实例说明它是如何进行转置的。
传给transpose的参数是以轴编号组成的元组,返回的结果是源数据的视图,而不是拷贝,即对transpose的修改都会反应到原始数据上。

arr = np.arange(16).reshape((2,2,4))#2,2,4分别对应0,1,2轴
print("arr:")
print(arr.shape)
print(arr)

out

arr:
(2, 2, 4)
[[[ 0  1  2  3]
  [ 4  5  6  7]]

 [[ 8  9 10 11]
  [12 13 14 15]]]
arr2 = arr.transpose((1,0,2))#这里就是对应的轴编号。
print("1和0轴转换后:")
print(arr2)

out

10轴转换后:
[[[ 0  1  2  3]
  [ 8  9 10 11]]

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

这里貌似看不出来它是怎么转的。原来的shape为(2,2,4),对应的轴为(0,1,2),现在transpose((1,0,2)),即轴1和0轴进行了转换,拿其中的几个数举例。

原来数字8的位置:(1,0,0),转换后的位置:(0,1,0),正是1和0轴进行了对调。

原来的数字12位置:(1,1,0),因为其轴0和轴1的位置都是1,所以转换后的位置没变,还是(1,1,0)。

下面再看1和2轴的转换也就类似了。

arr3 = arr.transpose((0,2,1))
print("1和2轴转换后:")
print(arr3)

out

12轴转换后:
[[[ 0  4]
  [ 1  5]
  [ 2  6]
  [ 3  7]]

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

同样举例:

原来数字1的位置:(0,0,1),对调后就变成了(0,1,0),正是1和2轴的位置换了下。

数字11的位置:(1,0,3),对调后就变成了(1,3,0),也正是1和2轴的位置换了下。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值