ndarray数组的转置(transpose)和轴对换

ndarray数组的转置(transpose)和轴对换

转置可以对数组进行重置,返回的是源数据的视图(不会进行任何复制操作)。
转置有三种方式,transpose方法、T属性以及swapaxes方法。

1 .T

import numpy as np
arr = np.arange(9).reshape((3,3))#生成一个33列的数组
print arr
[[0 1 2]
 [3 4 5]
 [6 7 8]]
print arr.T
[[0 3 6]
 [1 4 7]
 [2 5 8]]

2. transpose

对于高维数组,transpose需要用到一个由轴编号组成的元组,才能进行转置。

比如说三维的数组,那就对维度进行编号,也就是0,1,2。这里的0,1,2可以理解为对shape返回元组的索引。
比如

arr1 = np.arange(24).reshape(2,3,4)#生成一个2*3*4的数组
print arr1
[[[ 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 arr1.shape #看形状
(2, 3, 4)        #说明这是一个2*3*4的数组(矩阵),返回的是一个元组,可以对元组进行索引,也就是0,1,2

transpose((1,0,2)) 的意义在于将 (2, 3, 4) 转成 (3, 2, 4) ,比如,数值12开始的索引是 [1,0,0] ,变换后变成了 [0,1,0] ,如下图:


print arr1.transpose((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]]]

3.swapaxes

swapaxes,它接受一对轴编号。进行轴对换。
arr1 = np.arange(24).reshape(2,3,4)
print arr1
[[[ 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 arr1.swapaxes(1,0) #将第一个轴和第二个轴交换,对比transpose(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]]]

猜你喜欢

转载自blog.csdn.net/skybell/article/details/80230712