numpy.transpose
p = numpy.transpose(a, axes=None)
作用:颠倒或重新排列数组的轴,返回修改后的数组。
参数:
- a : 类数组(array_like)对象。
- axes: 元组或int列表,为可选参数。假设a的维数为 n n n,如果指定axes,那么元组或列表的内容必须为0,1,2,…, n n n-1 这 n n n个整数的一种排列。返回的 n n n维数组p的 i i i轴即对应原axes[ i i i]轴。如果不指定,默认为[n-1, …,1,0]。
返回值:
n
n
n维数组(ndarray)。
注意
:如果输入a为一维数组,则仍返回原数组
# 例1
x = numpy.arange(8).reshape((2,4))
p = numpy.transpose(x) # 不指定则axes默认为[1,0]
# x [[0 1 2 3] p [[0 4]
# [4 5 6 7]] [1 5]
# [2 6]
# [3 7]]
# 例2
x = numpy.arange(8).reshape(2,2,2)
p = numpy.transpose(x, [1,2,0])
# x[[[0 1] P [[[0 4]
# [2 3]] [1 5]]
# [[4 5] [[2 6]
# [6 7]]] [3 7]]]
“返回的
n
n
n维数组p的
i
i
i轴即对应axes[
i
i
i]轴”,这句话怎么理解呢?
如上例1,x的shape是(2,4),axes=[1,0]。所以在变换后的数组p中,0坐标轴对应于axes[0]轴也即原 1轴,1坐标轴对应于axes[1]也即原 0轴。就相当于0轴和1轴对调,类似矩阵的转置
(
i
,
j
)
→
(
j
,
i
)
(i,j)→(j,i)
(i,j)→(j,i)。例2同理,由
(
i
,
j
,
k
)
→
(
j
,
k
,
i
)
(i,j,k)→(j,k,i)
(i,j,k)→(j,k,i)。
如下图,例1中6的位置从(1,2)转换到(2,1)。例2中6的位置从(1,1,0)转换为(1,0,1)。
每一个位置上的数据都做同样的变换,得到数组p。