transponse是numpy重塑数组的方法。
首先,数组有一个特殊的T属性:
arr = np.arange(15).reshape((3, 5))
arr
''
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
''
arr.T
''
array([[ 0, 5, 10],
[ 1, 6, 11],
[ 2, 7, 12],
[ 3, 8, 13],
[ 4, 9, 14]])
''
这个还是比较简单的,数组的简单轴对换。
对高维数组,可以用transponse进行更复杂的转置:
arr = np.arange(16).reshape((2, 2, 4))
arr
''
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]])
''
arr.transponse((1, 0, 2))
''
array([[[ 0, 1, 2, 3],
[ 8, 9, 10, 11]],
[[ 4, 5, 6, 7],
[12, 13, 14, 15]]])
''
这个稍微复杂一点,想明白确实想了一段时间。这个重塑,分为两步:
- 结构的调整
首先输入arr.shape
,得到数组结构(2, 2, 4)
,transponse参数(1, 0, 2)
,也就是说该数组调整后,结构不变还是(2, 2, 4)
。 - 索引的改变
比如说arr[0, 1, 0] = 4, 转置后, 1和0调换,所以,调整后4的索引为[1, 0, 0],其余的数字以此类推。