python 学习笔记(1)--numpy数组转置

关于数组的转置,Numpy提供了transpose函数和.T属性两种实现形式,一般transpose使用起来更为方便,另外转换其中的两个轴还可以用swapreaxes,下面通过例子来做介绍。

#一维数组转置
>>> arr = np.arange(6)
>>> print arr
[0, 1, 2, 3, 4, 5]
>>> print np.transpose(arr)
[0, 1, 2, 3, 4, 5]#一维还是一维…
#二维数组转置
>>> arr = np.arange(6).reshape((2,3))
>>> print arr
[[0, 1, 2],
 [3, 4, 5]]
>>> print np.transpose(arr)
[[0,3],
 [1,4],
 [3,5]]
#三维数组的转置
>>> arr = np.arange(24).reshape((2,3,4))
>>> print arr
[[[ 0, 1, 2, 3],
   [ 4, 5, 6, 7],
   [ 8, 9, 10, 11]],
  [[ 12, 13, 14, 15],
   [ 16, 17, 18, 19],
   [ 20, 21, 22, 23]]]
>>> print np.transpose(arr)
[[[0, 12],
  [4, 16],
  [8, 20]],
 [[1, 13],
  [5, 17],
  [9, 21]],
 [[2, 14],
  [6, 18],
  [10, 22]],
 [[3, 15],
  [7, 19],
  [11, 23]]]
#当数组>=三维之后,我们可能希望按照特定规则来转置,transpose 可以接受用于指定转置的坐标轴号码的元组
>>> print np.transpose(arr, (1,0,2))
[[[ 0, 1, 2, 3],
  [ 12, 13, 14, 15]],
 [[ 4, 5, 6, 7],
  [ 16, 17, 18, 19]],
 [[ 8, 9, 10, 11],
  [ 20, 21, 22, 23]]]

对于是否指定转化规则,具体来看三维的变化:原始数据的“三维”是(2,3,4),不指定转换规则后的“三维”是(4,3,2),而指定规则后的三维则是按照我们指定的规则,将其一维和二维进行调换。

#原始三维数据规则
>>> print (arr.shape)
(2, 3, 4)
#不指定转换规则
>>> print (np.transpose(arr).shape)
(4, 3, 2)
#指定转换规则
>>> print (np.transpose(arr,(1, 0, 2)).shape)
(3, 2, 4)

ndarray的T属性,用法则比较简单,只需要在数组后跟.T即可。.T属性实际是转置里面的特殊情况,即不指定转置规则的默认规则。

#一维数组转置
>>> arr = np.arange(6)
>>> print arr
[0, 1, 2, 3, 4, 5]
>>> print arr.T
[0, 1, 2, 3, 4, 5]#一维还是一维…
#二维数组转置
>>> arr = np.arange(6).reshape((2,3))
>>> print arr
[[0, 1, 2],
 [3, 4, 5]]
>>> print arr.T
[[0,3],
 [1,4],
 [3,5]]
#三维数组的转置
>>> arr = np.arange(24).reshape((2,3,4))
>>> print arr
[[[ 0, 1, 2, 3],
   [ 4, 5, 6, 7],
   [ 8, 9, 10, 11]],
  [[ 12, 13, 14, 15],
   [ 16, 17, 18, 19],
   [ 20, 21, 22, 23]]]
>>> print arr.T
[[[0, 12],
  [4, 16],
  [8, 20]],
 [[1, 13],
  [5, 17],
  [9, 21]],
 [[2, 14],
  [6, 18],
  [10, 22]],
 [[3, 15],
  [7, 19],
  [11, 23]]]

当某些情况下,你可能只需要转换其中的两个轴,除了可以使用transpose指定轴以外(当然需要每个轴都指定顺便,只是调整其中的部分而已),还可以使用swapreaxes。

>>> arr = np.arange(24).reshape((2,3,4))
>>> print arr
[[[ 0, 1, 2, 3],
   [ 4, 5, 6, 7],
   [ 8, 9, 10, 11]],
  [[ 12, 13, 14, 15],
   [ 16, 17, 18, 19],
   [ 20, 21, 22, 23]]]
>>> print arr.swapaxes(1, 0)
[[[ 0, 1, 2, 3],
  [ 12, 13, 14, 15]],
 [[ 4, 5, 6, 7],
  [ 16, 17, 18, 19]],
 [[ 8, 9, 10, 11],
  [ 20, 21, 22, 23]]]
  • 14
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值